12、DockerFile之CMD和ENTRYPOINT命令详解

1.CMD 命令

1.CMD 指定容器启动时默认执行的命令
2.Dockerfile只能有一个CMD命令,如果有多条,将执行最后一条
3.docker run 指定命令会覆盖CMD命令

1.1CMD格式

CMD ["exec","param1","param2"] exec模式,exec:一个可执行文件的路径 然后带上命令参数
CMD command param1             shell模式
CMD ["param1","param2"]        提供Entrypoint的默认参数 

1.2 CMD实战


FROM ubuntu

MAINTAINER liuwei liuwei@163.com

RUN apt-get update
RUN apt-get install nginx -y
CMD ["/usr/sbin/nginx","-g","daemon off"]

EXPOSE 80
#构建镜像 
docker build  -t ubuntu-nginx:v0.3  .   
#根据镜像创建容器,创建时候,不添加执行命令    
docker run --name nginx-1 -itd ubuntu-nginx:v0.3    
#根据镜像创建容器,创建时候,添加执行命令/bin/bash    
docker run  --name nginx-2 -itd ubuntu-nginx:v0.3 /bin/bash    docker ps          

最后反向两者的command不一样

CONTAINER IDIMAGECOMMAND
921d00c3689fubuntu-nginx:v0.3"/bin/bash"
921d00c3689fubuntu-nginx:v0.3"/usr/sbin/nginx -g …"

2.ENTRYPOINT命令

1.不会被Dockerfile命令覆盖
2.每个Dockerfile只能有一个Entrypoint命令,当有多个时,只最后一个执行

2.1.ENTRYPOINT格式

 ENTRYPOINT ["executable", "param1","param2"] (exec 模式) 
 ENTRYPOINT command param1 param2 (shell 模式) 

3.CMD和ENTRYPOINT综合使用

FROM ubuntu

MAINTAINER liuwei liuwei@163.com

RUN mkdir hello
RUN mkdir world
RUN apt-get update
RUN apt-get install nginx -y
ENTRYPOINT ["/usr/sbin/nginx"]
CMD ["-g"]

EXPOSE 80
#构建镜像
docker build -t ubuntu-nginx:v0.5 .   
#根据镜像创建容器,创建时候,不添加执行命令   
docker run --name nginx-6 -d ubuntu-nginx:v0.5 
#根据镜像创建容器,创建时候,不添加执行命令,覆盖cmd的参数 -g "daemon off;" 
docker run  --name nginx-7 -d ubuntu-nginx:v0.5 -g "daemon off;" 

最后反向两者的command不一样

CONTAINER IDIMAGECOMMAND
921d00c3689fubuntu-nginx:v0.5"/usr/sbin/nginx -g"
921d00c3689fubuntu-nginx:v0.5"/usr/sbin/nginx -g …"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值