zoukankan      html  css  js  c++  java
  • Dockerfile 中 RUN, CMD, ENTRYPOINT 的区别

    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"]
    

    ENTRYPOINT 与 CMD 区别
    
    如:
    FROM ubuntu:14.10  
    ENTRYPOINT ["top", "-b"]   
    CMD ["-c"]  
    	
    把可能需要变动的参数写到 CMD 里面。然后你可以在 docker run 里指定参数,这样 CMD 里的参数(这里是-c) 就会被覆盖掉而 ENTRYPOINT 里的不被覆盖。
    
    注意:
    ENTRYPOINT有两种写法,第二种(shell form)会屏蔽掉 docker run 时后面加的命令和 CMD 里的参数。
    
    
  • 相关阅读:
    自定义asp.net mvc Filter 过滤器
    基于委托的C#异步编程的一个小例子 带有回调函数的例子
    ASCII、Unicode和UTF-8编码的区别
    Specification模式的一个不错的示例代码
    codesmith 自动生成C# model 实体模板
    Quartz.NET 实现定时任务调度
    FtpHelper类匿名获取FTP文件
    crc32 根据字符串获取校验值
    机器学习能做什么
    RunHelper,一个为跑步而设计的开源的android app
  • 原文地址:https://www.cnblogs.com/klvchen/p/9238410.html
Copyright © 2011-2022 走看看