前端需要知道的docker基础操作

483 阅读3分钟

docker 镜像操作

  • 拉取镜像 docker pull

    docker pull [Registry]/[Repository]/[Image]:[Tag]。

    • Registry 为注册服务器,Docker 默认会从 docker.io 拉取镜像,如果你有自己的镜像仓库,可以把 Registry 替换为自己的注册服务器。

    • Repository 为镜像仓库,通常把一组相关联的镜像归为一个镜像仓库,library 为 Docker 默认的镜像仓库。

    • Image 为镜像名称。

    • Tag 为镜像的标签,如果你不指定拉取镜像的标签,默认为 latest。

    • Repository 为镜像仓库,通常把一组相关联的镜像归为一个镜像仓库,library 为 Docker 默认的镜像仓库。

    • Image 为镜像名称。

    • Tag 为镜像的标签,如果你不指定拉取镜像的标签,默认为 latest。

  • 重命名镜像 docker tag

    docker tag [SOURCE_IMAGE][:tag] [TARGET_IMAGE][:tag]

  • 查看查看本地已经存在的 docker image ls / docker images

  • 删除无用镜像 docker rmi

  • 构建镜像

    • docker commit 命令从运行中的容器提交为镜像;
    • docker build 命令从 Dockerfile 构建镜像。

Dockerfile 指令表头
FROMDockerfile 除了注释第一行必须是 FROM ,FROM 后面跟镜像名称,代表我们要基于哪个基础镜像构建我们的容器。
RUNRUN 后面跟一个具体的命令,类似于 Linux 命令行执行命令。
ADD拷贝本机文件或者远程文件到镜像内
COPY拷贝本机文件到镜像内
USER指定容器启动的用户
ENTRYPOINT容器的启动命令
CMDCMD 为 ENTRYPOINT 指令提供默认参数,也可以单独使用 CMD 指定容器启动参数
ENV指定容器运行时的环境变量,格式为 key=value
ARG定义外部变量,构建镜像时可以使用 build-arg = 的格式传递参数用于构建
EXPOSE指定容器监听的端口,格式为 [port]/tcp 或者 [port]/udp
WORKDIR为 Dockerfile 中跟在其后的所有 RUN、CMD、ENTRYPOINT、COPY 和 ADD 命令设置工作目录。

docker 容器操作

  • 容器的生命周期

    1. created:初建状态

    2. running:运行状态

    3. stopped:停止状态

    4. paused: 暂停状态

    5.deleted:删除状态

  • 容器生命周期操作

    • docker create 将镜像转化为容器处建状态 docker create -it --name=busybox busybox

    • docker start 初建状态->运行状态 / 停止状态 -> 运行状态

    • docker stop 运行状态->停止状态

    • docker pause 运行状态->暂停状态

    • docker unpause 暂停状态->运行状态

    • docker rm 删除

    • docker restart 重启镜像

    • docker attach / docker exec -it CONTAINER 进入容器

    • docker export busybox > busybox.tar 导出命令

    • docker import busybox.tar busybox:test 导入容器

    • docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

      • OPTIONS

        • -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;

        • -d: 后台运行容器,并返回容器 ID;

        • -i: 以交互模式运行容器,通常与 -t 同时使用;

        • -P: 随机端口映射,容器内部端口随机映射到主机的端口

        • -p: 指定端口映射,格式为:主机(宿主)端口:容器端口

        • -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

        • --name="nginx-lb": 为容器指定一个名称;

        • --dns 8.8.8.8: 指定容器使用的 DNS 服务器,默认和宿主一致;

        • --dns-search example.com: 指定容器 DNS 搜索域名,默认和宿主一致;

        • -h "mars": 指定容器的 hostname;

        • -e username="ritchie": 设置环境变量;

        • --env-file=[]: 从指定文件读入环境变量;

        • --cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定 CPU 运行;

        • -m :设置容器使用内存最大值;

        • --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;

        • --link=[]: 添加链接到另一个容器;

        • --expose=[]: 开放一个端口或一组端口;

        • --volume , -v: 绑定一个卷