Docker3

some differents points about docker CMD and ENTRYPOINT or RUN

This project is maintained by wangfakang

关于RUN CMD ENTRYPOINT命令的区别:

这几个命令RUN CMD ENTRYPOINT 经常在我们写Dockerfile的时候会用到:

1.首先我们知道RUN命令和另外两个命令的执行时间是不一样的,RUN命令是运行在docker build的时候在进行镜像生成的时候.

而CMD以及ENTRYPOINT命令是执行在镜像执行产生容器的时候.

2.下面说一下CMD和ENTRYPOINT命令的不同点:

3.以及CMD[]和CMD不加中括号也是有区别的:

  在CMD后面加中括号,则命令最终会通过exec产生的进程中进行执行,而不加中括号则在当前的/bin/sh环境中执行.
  相应的ENTRYPOINT也有类似的两种写法.

4.CMD与ENTRYPOINT的写法:

CMD ["executable","param1","param2"] (exec form, this is the preferred form)   
CMD ["param1","param2"] (as default parameters to ENTRYPOINT)   
CMD command param1 param2 (shell form)   

ENTRYPOINT ["executable", "param1", "param2"] (exec form, the preferred form)   
ENTRYPOINT command param1 param2 (shell form)   

其中CMD的第二种写法是为ENTRYPOINT传递参数的,如:   
 FROM ubuntu 
 CMD ["-l"]    
 ENTRYPOINT ["ls"]   
上面相当于:ENTRYPOINT ["ls -l"]  

欢迎一起交流学习

在使用中有任何问题,欢迎反馈给我,可以用以下联系方式跟我交流

Thx

Author