Dockerfile中RUN,CMD,ENTRYPOINT的区别

Dockerfile中RUN,CMD,ENTRYPOINT的区别

RUN是映像构建步骤,RUN命令后的容器状态将提交给Docker映像。一个Dockerfile可以具有许多RUN步骤,这些步骤彼此叠加以构建映像。

CMD是启动构建映像时容器默认执行的命令。一个Dockerfile只能有一个CMD。使用docker run $image $other_command启动容器时,可以覆盖CMD。

ENTRYPOINT也与CMD密切相关,并且可以修改容器启动图像的方式。

RUN指令允许您安装应用程序和软件包
所需的。它在当前图像的顶部执行任何命令
并通过提交结果来创建一个新层。通常你会发现
Dockerfile中有多个RUN指令。

CMD指令可让您设置默认命令,该命令为
仅在运行容器而不指定命令时执行。
如果Docker容器使用命令运行,则默认命令为
忽略了。如果Dockerfile具有多个CMD指令,则除最后一条以外的所有指令
CMD指令将被忽略。

RUN 指令:用于指定 docker build 过程中要运行的命令。
	语法格式:
	 RUN <command> 或
	 RUN ["<executeable>","<param1>","param2",...]
	 RUN ["/bin/bash","-c","<executeable>","param1","param2",...]
			
	例如:
		RUN yum install iproute nginx && yum clean all
CMD 指令:类似于 RUN 指令,用于运行程序,但二者运行的时间点不同;CMD 在docker run 时运行,而非docker build;
CMD 指令的首要目的在于为启动的容器指定默认要运行的程序,程序运行结束,容器也就结束;注意: CMD 指令指定的程序可被 docker run 命令行参数中指定要运行的程序所覆盖。
	语法格式:
	CMD <command> 或
	CMD ["<executeable>","<param1>","<param2>",...] 
	CMD ["<param1>","<param2>",...] 该写法是为 ENTRYPOINT 指令指定的程序提供默认参数;
注意:如果 dockerfile 中如果存在多个CMD指令,仅最后一个生效;
		
	例如:		
            CMD ["/usr/sbin/httpd","-c","/etc/httpd/conf/httpd.conf"]
ENTRYPOINT 指令:类似于 CMD 指令,但其不会被 docker run 的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序;但是, 如果运行 docker run 时使用了 --entrypoint 选项,此选项的参数可当作要运行的程序覆盖 ENTRYPOINT 指令指定的程序;
    语法格式:
	ENTRYPOINT <command> 或
	ENTRYPOINT ["<executeable>","<param1>","<param2>",...]
			
	例如:
	    CMD ["-c"]
	    ENTRYPOINT ["top","-b"]
eg:
docker run -it --entrypoint=/bin/bash nginx
ENTRYPOINT 与 CMD 区别

如:
FROM ubuntu:14.10  
ENTRYPOINT ["top", "-b"]   
CMD ["-c"]  
	
把可能需要变动的参数写到 CMD 里面。然后你可以在 docker run 里指定参数,这样 CMD 里的参数(这里是-c) 就会被覆盖掉而 ENTRYPOINT 里的不被覆盖。

注意:
ENTRYPOINT有两种写法,第二种(shell form)会屏蔽掉 docker run 时后面加的命令和 CMD 里的参数。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值