首页 > 其他分享 >Dockerfile中CMD和ENTRYPOINT的区别

Dockerfile中CMD和ENTRYPOINT的区别

时间:2022-12-08 16:36:46浏览次数:49  
标签:run image CMD ENTRYPOINT ti docker Dockerfile


CMD和ENTRYPOINT同样作为容器启动时执行的命令,区别有以下几点:

CMD的命令会被 docker run 的命令覆盖而ENTRYPOINT不会

如使用CMD ["/bin/bash"]或ENTRYPOINT ["/bin/bash"]后,再使用docker run -ti image启动容器,它会自动进入容器内部的交互终端,如同使用
docker run -ti image /bin/bash。

但是如果启动镜像的命令为docker run -ti image /bin/ps,使用CMD后面的命令就会被覆盖转而执行bin/ps命令,而ENTRYPOINT的则不会,而是会把docker run 后面的命令当做ENTRYPOINT执行命令的参数。
以下例子比较容易理解
Dockerfile中为:

...
ENTRYPOINT ["/user/sbin/nginx"]

然后通过启动build之后的容器:

docker run -ti image -g "daemon off"

此时-g "daemon off"会被当成参数传递给ENTRYPOINT,最终的命令变成了:

/user/sbin/nginx -g "daemon off"

CMD和ENTRYPOINT都存在时

CMD和ENTRYPOINT都存在时,CMD的指令变成了ENTRYPOINT的参数,并且此CMD提供的参数会被 docker run 后面的命令覆盖,如:

...
ENTRYPOINT ["echo","hello","i am"]
CMD ["docker"]

之后启动构建之后的容器:

使用docker run -ti image

输出“hello i am docker”

使用docker run -ti image world

输出“hello i am world”


标签:run,image,CMD,ENTRYPOINT,ti,docker,Dockerfile
From: https://blog.51cto.com/u_15906694/5922719

相关文章

  • Dockerfile镜像制作 与 Docker-Compose容器编排
    Dockerfile镜像制作docker/podman中,镜像是容器的基础,每次执行dockerrun的时候都会指定哪个基本镜像作为容器运行的基础。我们之前的docker的操作都是使用来自dockerhub......
  • dockerfile 缩减镜像
    title:Dockerfile缩减镜像技巧categories:-dockersummary:Dockerfile缩减镜像技巧Dockerfile缩减镜像技巧构建上下文执行dockerbuild命令时,当前的工作......
  • windows mongo 开启副本集 6.x版本 mongo : 无法将“mongo”项识别为 cmdlet、函数
    mongo报错当前使用版本6.0.3,bin目录下并没有mongo.exe,所以没有mongo命令,需要下载 https://www.mongodb.com/try/download/shell 解压放到bin目录。ps:新版本的一些备......
  • Dockerfile
     指令清单:FROM,定义使用哪个基础镜像来启动构建流程。MAINTAINER,声明镜像的创建者。RUN,构建镜像的核心部分,定义需要做哪些事情来构建镜像。ADD,将宿主机的文件复制到容......
  • k8s DockerFile中使用执行linux命令,安装字体
     #字体安装RUNapt-getupdate&&\apt-get-yinstallfontconfigxfonts-utils&&\mkdir-p/usr/share/fonts#复制字体ADDFonts.zip/usr/share/fonts/#wgethttps......
  • cmd.exe打不开
    cmd.exe无法打开解决办法在卸载anaconda后发现无法打开cmd,win+R或者是找到cmd.exe均无法打开。可能是安装或配置Anaconda时在注册Computer\HKEY_CURRENT_USER......
  • 如何使用命令行(cmd窗口等)?
    每次查每次忘,自己写一个常用的供查询,希望哪天能成为我的本能。cd文件名:进入下一级文件cd..:返回上一文件夹......
  • Cmder简单配置
    右键加入:Cmder.exe/REGISTERALL解决中文乱码:找到Startup选项下的Environment,追加这些命令setPATH=%ConEmuBaseDir%\Scripts;%PATH%setLANG=zh_CN.UTF-8setLC_ALL=......
  • Windows CMD常用命令
    Linux上主要操作是命令,懂一点linux知识的都知道,其实windows下边很多工具也是可以用命令来操作打开的,这样会提高效率,节省很多的时间。下边就记录一下常用的命令。一、常用......
  • cmd无限弹窗
    记一次写.bat文件时犯的低级错误,搞的重启了好几次才发现问题所在如下 文件名 和批处理 内容 会造成 无限弹出cmd窗口原因是一般情况下会启动系统的cmd.exe,而此......