Difference between RUN and CMD in a Dockerfile
我对何时应该使用
RUN是映像构建步骤,
CMD是启动构建映像时容器默认执行的命令。一个Dockerfile只能有一个
ENTRYPOINT也与
RUN-在构建Docker映像时触发命令。
CMD-在启动创建的docker映像时触发命令。
我发现本文对理解它们之间的区别非常有帮助:
跑 -
RUN指令允许您安装应用程序和软件包
所需的。它在当前图像的顶部执行任何命令
并通过提交结果来创建一个新层。通常你会发现
Dockerfile中有多个RUN指令。
CMD-
CMD指令可让您设置默认命令,该命令为
仅在运行容器而不指定命令时执行。
如果Docker容器使用命令运行,则默认命令为
忽略了。如果Dockerfile具有多个CMD指令,则除最后一条以外的所有指令
CMD指令将被忽略。
运行-安装Python,您的容器现在已将python刻录到其映像中
CMD-python hello.py,运行您喜欢的脚本
RUN命令:
在构建映像时,RUN命令基本上将执行默认命令。它还将提交图像更改以进行下一步。
可以有多个RUN命令,以帮助构建新映像。
CMD命令:
CMD命令只会为新容器设置默认命令。这将不会在构建时执行。
如果docker文件具有多个1个CMD命令,则除最后一个命令外,所有其他命令都将被忽略。由于此命令将不执行任何操作,而只是设置默认命令。
Note: Don’t confuse RUN with CMD. RUN actually runs a command and
commits the result; CMD does not execute anything at build time, but
specifies the intended command for the image.
来自docker文件参考
https://docs.docker.com/engine/reference/builder/#cmd