大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说Docker ENTRYPOINT与CMD的对比:深度剖析[通俗易懂],希望您对编程的造诣更进一步.
在Docker中,ENTRYPOINT和CMD都是用来指定容器启动时执行的命令。然而,它们的用途略有不同。
ENTRYPOINT指令用于设置将被用作容器中主进程的命令和参数。这意味着传递给docker run的任何参数都将被附加到ENTRYPOINT指令的结尾。
例如01,考虑以下Docker文件:
FROM alpine
ENTRYPOINT ["echo", "Hello"]
docker build -t base01_img .
docker run -d –name mycontainer_01 base01_img World
Hello World
Hello以及World被执行。
例如02,考虑以下Docker文件:
FROME ubuntu
ENTRYPOINT ["sh"]
docker build -t base01_img .
docker run -d –name mycontainer_01 base01_img ping -c 10 google.com
shell以及ping被执行。
而不是重写,它将串联容器中的ping命令
CMD :
另一方面,CMD指令是用来为ENTRYPOINT指令提供默认参数的。如果指定了CMD指令而没有ENTRYPOINT指令,那么CMD将是容器启动时运行的命令。
设置默认参数,可以在运行docker容器时从Docker命令行界面(CLI)覆盖。CMD可以通过另一个命令来覆盖。
如果你在docker文件中写了多个CMD,只有最后一个CMD会生效。
例如,考虑以下Docker文件:
FROM alpine
CMD ["sh"]
当你用以下命令运行这个容器时:
$ docker run my-image ping -c 10 google.com
输出结果将是:
ping -c 10 google.com
容器被创建,但默认的执行路径将是ping -c 10 google.com。
CMD的第一条命令 “sh “将被 “ping -c 10 google.com “所覆盖。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/12129.html