如何查看 现有 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 那么 只有最初一个 无效