重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇内容介绍了“CMD和ENTRYPOINT怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
创新互联于2013年创立,先为商南等服务建站,商南等地企业,进行企业商务咨询服务。为商南企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
CMD指令有三种形式:
CMD ["executable","param1","param2"]
(exec形式,这是优先形式)
CMD ["param1","param2"]
(作为ENTRYPOINT的默认参数)
CMD command param1 param2
(shell 形式)
Dockerfile中只能有一条CMD指令。如果存在多个CMD,那么只有最后一个CMD才会生效。
CMD的主要目的是为正在执行的容器提供默认值。这些默认值可以包括可执行文件,也可以省略可执行文件。省略可执行文件时必须指定ENTRYPOINT指令。
备注:如果CMD用于为ENTRYPOINT指令提供默认参数,则CMD和ENTRYPOINT指令都应该使用JSON数组格式指定。
备注:exec形式会被解析为JSON数组,这意味着必须对单词使用双引号,而不是单引号。
备注:与shell形式不同,exec形式不调用命令shell。这意味着正常的shell处理不会生效。例如,CMD ["echo", "$HOME"]不会对$HOME执行变量替换。如果想要shell处理生效,要么使用shell形式,要么直接执行shell,例如:CMD [ "sh", "-c", "echo $HOME" ]。当使用exec形式并直接执行shell时,就像shell形式一样,执行环境变量扩展的是shell,而不是docker。
在使用shell或exec格式时,CMD设置了运行镜像时要执行的命令。
如果使用CMD的shell形式,那么<命令>将在/bin/sh -c中执行:
FROM ubuntu CMD echo "This is a test." | wc -
如果不想在shell的形式下运行
FROM ubuntu CMD ["/usr/bin/wc","--help"]
如果希望容器每次运行相同的可执行文件,那么应该考虑将ENTRYPOINT与CMD结合使用。
如果用户指定docker run的参数,那么CMD中指定的默认值将被run的参数覆盖。
备注:不要将RUN与CMD混淆。RUN实际运行一个命令并提交结果;CMD在构建时不执行任何操作,但为镜像指定预期的命令。
ENTRYPOINT有两种形式:
ENTRYPOINT ["executable", "param1", "param2"]
(exec 形式,这是优先形式)
ENTRYPOINT command param1 param2
(shell 形式)
ENTRYPOINT允许您配置将作为可执行文件运行的容器。
“CMD和ENTRYPOINT怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!