如何查看 现有 images 的 入口信息
docker image inspect image_id{ "entrypoint": "xxx" "cmd" : "xxx"}
entrypoint
两种形式 ENTRYPOINT [“executable”, “param1”, “param2”] (exec 格局, 举荐) ENTRYPOINT command param1 param2 (shell 格局)
不会被 默认笼罩 然而 能够 通过 在 img 之前 通过 --entrypoint "" 进行笼罩 eg:
docker run -it --rm --entrypoint "/bin/bash" nginx
exec 模式
exec 模式下 能够承受 默认的 cmd 或者 用户 在 img 后的 bash 参数 作为 附加参数
不会 在 参数结尾 主动追加 /bin/bash -c
shell 模式
shell 模式下 不承受 任何 参数
并且 shell 模式 会主动追加 /bin/bash -c "原有参数"
cmd 形式
cmd 反对这两种形式
exec 格局 举荐这种格局, 应用这种模式时, 能够不须要 shell 过程, 让 Docker 利用的可执行程序成为容器的 PID 1 过程, 能够接管 Unix 信号, 比方执行 docker stop 时可能接管到 SIGTERM。
cmd 能够应用 用户 最初 的 参数进行笼罩
eg:
docker run -it --rm nginx "/bin/bash"docker run -it --rm nginx "/bin/sh"
总结
在 Dockerfile 中, 应该至多指定一个 CMD 和 ENTRYPOINT; 将 Docker 当作可执行程序时, 应该应用 ENTRYPOINT 进行配置; CMD 能够用作 ENTRYPOINT 默认参数, 或者用作 Docker 的默认命令; CMD 能够被 docker run 传入的参数笼罩; docker run 传入的参数会附加到 ENTRYPOINT 之后, 前提是应用了 exec 格局 。
如果存在 多个 cmd 或者 entrypoint 那么 只有最初一个 无效