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