![77cd241a74c59fa600904f9bcb76285f.png](https://i-blog.csdnimg.cn/blog_migrate/400414dac6ef6e53ba8577a97260dab3.jpeg)
看不懂Dockerfile里很痛苦,直到
https://goinbigdata.com/docker-run-vs-cmd-vs-entrypoint/#:~:text=In%20a%20nutshell&text=CMD%20sets%20default%20command%20and,will%20run%20as%20an%20executablegoinbigdata.com.这篇文章解释的很清楚
In a nutshell
- RUN 会在现有的基础上新添一层layer,创建一个新的image。(一般用来安装软件包)
- CMD 设定默认的command或者参数。在启动docker时没有指定参数会执行,如果指定了就会被覆盖执行。
- ENTRYPOINT 将容器配置成一个executable.
Docker images and layers
Docker跑容器时,他在容器内启动了一个image。这个image往往都是通过执行Docker instructions来一层层的往上加layer来执行的。所以说祖宗容器就是最初的Image,每向上加一层就会形成一个新的容器。
Shell and Exec forms
RUN, CMD and ENTRYPOINT 都可以通过 shell或者 exec两种方式来执行。下面先举些例子.