在Dockerfile里,CMD指令是可以被覆盖的。
在构建镜像时,可以通过docker build命令的–cmd选项覆盖Dockerfile的CMD:
例如:
FROM ubuntu
CMD ["echo","hello"]
构建时覆盖CMD:
docker build -t test --cmd "echo world" .
在创建容器时,可以通过docker run命令的–cmd选项覆盖镜像的CMD:
docker run test --cmd "echo hi"
在启动已存在的容器时,通过docker start命令的–cmd选项覆盖:
docker start --cmd "echo hi" mycontainer
在运行中的容器内可以直接执行其他命令,会覆盖CMD指令。
所以Dockerfile中的CMD指令只是提供一个默认的命令,在之后各种使用场景下都是可以被覆盖的。
我们可以通过CMD提供一个应用的默认启动命令,但在具体运行时可以很灵活地修改和覆盖它。
博客介绍了Dockerfile中CMD指令可被覆盖的特性。构建镜像时,可用docker build命令的–cmd选项覆盖;创建容器、启动已存在容器时,分别用docker run、docker start命令的–cmd选项覆盖;运行中的容器内执行其他命令也会覆盖。CMD指令仅提供默认命令,使用灵活。
214

被折叠的 条评论
为什么被折叠?



