您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

当基本映像为centos vs ubuntu时,当以shell形式运行CMD / ENTRYPOINT时,不同的进程作为PID 1运行:

当基本映像为centos vs ubuntu时,当以shell形式运行CMD / ENTRYPOINT时,不同的进程作为PID 1运行:

这是的行为bash。Docker仍在运行带有外壳的命令,您可以通过检查来识别该外壳:

$ docker inspect test-centos-entrypoint --format '{{.Config.Entrypoint}}'
[/bin/sh -c ping localhost]

您可以看到/ bin / sh的版本(请注意GNU bash部分):

$ docker exec -it quicktest /bin/sh --version
GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.                               
There is NO WARRANTY, to the extent permitted by law.

/ bin / sh的ubuntu版本(可能是破折号)甚至不支持--version标志,并且未链接到bash。但是,如果您将ubuntu映像更改为使用bash而不是/ bin / sh,则会看到与centos匹配的行为:

$ cat df.ubuntu-entrypoint
FROM ubuntu:trusty
ENTRYPOINT [ "/bin/bash", "-c", "ping localhost" ]

$ DOCKER_BUILDKIT=0 docker build -t test-ubuntu-entrypoint -f df.ubuntu-entrypoint .
Sending build context to Docker daemon  23.04kB
Step 1/2 : FROM ubuntu:trusty
 ---> 67759a80360c
Step 2/2 : ENTRYPOINT [ "/bin/bash", "-c", "ping localhost" ]
 ---> Running in 5c4161cafd6b
Removing intermediate container 5c4161cafd6b
 ---> c871fe2e2063
Successfully built c871fe2e2063
Successfully tagged test-ubuntu-entrypoint:latest

$ docker run -d --name quicktest2 --rm test-ubuntu-entrypoint
362bdc75e4a960854ff17cf5cae62a3247c39079dc1290e8a85b88114b6af694

$ docker exec -it quicktest2 ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 13:05 ?        00:00:00 ping localhost
root         8     0  0 13:05 pts/0    00:00:00 ps -ef
其他 2022/1/1 18:15:34 有522人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶