如何查看 现有 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 那么 只有最后一个 有效
欢迎大家一起交流呀
qq群:3638803451
vx:wxid_sgdelhiwombj12


乐码客
1 声望1 粉丝