美文网首页
docker学习笔记(1)

docker学习笔记(1)

作者: AlexLee2019 | 来源:发表于2019-01-31 17:08 被阅读0次

    docker学习笔记(1)

    1. docker run / docker create / docker start 三个命令有何区别

    1.1 docker run <image-id>

    docker run就是docker create和docker start两个命令的组合。

    image

    1.2 docker create <image-id>

    docker create命令为指定的镜像image添加了一个可读写层,构成了一个新的容器。注意,这个容器并没有运行。

    image

    image

    1.3 docker start <container-id>

    Docker start命令为容器文件系统创建了一个进程隔离空间。每一个容器只能够有一个进程隔离空间。

    image

    2. docker rm / docker kill 有何区别

    2.1 docker rm <container-id>

    docker rm命令会移除构成容器的可读写层。注意,这个命令只能对非运行态容器执行。

    image

    2.2 docker kill <container-id>

    docker kill 命令向运行在容器中的指定进程发送了一个不友好的SIGKILL信号。

    image

    3. Dockerfile 中的 ENTRYPOINT 和 CMD 有何区别

    可用两种方式指定 ENTRYPOINT 和 CMD 要运行的命令:Shell 格式和 Exec 格式,推荐使用 Exec 格式,因为可读性更强。

    3.1 ENTRYPOINT

    ENTRYPOINT 指令可让容器以应用程序或者服务的形式运行。

    ENTRYPOINT 不会被忽略,一定会被执行,即使运行 docker run 时指定了其他命令。

    ENTRYPOINT 中的参数始终会被使用,而 CMD 的额外参数可以在容器启动时动态替换掉。

    3.2 CMD

    CMD 指令允许用户指定容器的默认执行的命令。

    • 此命令会在容器启动且 docker run 没有指定其他命令时运行。
    • 如果 docker run 指定了其他命令,CMD 指定的默认命令将被忽略。

    例如 docker run -it [image] /bin/bash,CMD 会被忽略掉,命令 bash 将被执行。

    • 如果 Dockerfile 中有多个 CMD 指令,只有最后一个 CMD 有效。

    3.3 最佳实践

    • 使用 RUN 指令安装应用和软件包,构建镜像。
    • 如果 Docker 镜像的用途是运行应用程序或服务,比如运行一个 MySQL,应该优先使用 Exec 格式的 ENTRYPOINT 指令。CMD 可为 ENTRYPOINT 提供额外的默认参数,同时可利用 docker run 命令行替换默认参数。
    • 如果想为容器设置默认的启动命令,可使用 CMD 指令。用户可在 docker run 命令行中替换此默认命令。

    相关文章

      网友评论

          本文标题:docker学习笔记(1)

          本文链接:https://www.haomeiwen.com/subject/wvclsqtx.html