在dockerfile中如何做--rm和--restart?

时间:2016-12-14 21:33:15

标签: docker dockerfile

运行docker run时,您可以选择添加--rm和--restart。但是如何在dockerfile中获得相同的效果?

3 个答案:

答案 0 :(得分:2)

Dockerfile用于指定构建图像的指令。

构建映像后,可以使用docker run命令从该映像启动容器。 --rm--restartdocker run的选项,这意味着这些命令适用于容器。使用--restart标志可以为容器指定重新启动策略。 --rm标志用于在容器退出时删除容器上的文件系统。

我希望您能看到为什么这两个标志提供的功能不属于Dockerfile。如果没有,你应该真正阅读有关Docker的更多信息(特别是图像与容器)。

此外:

--rm删除文件系统并清理容器。 restart仅用于重新启动容器,文件系统在重新启动之间消失将是非常不愉快的。另请注意,文件系统删除后重新启动更像是"重新启动"而不是"重启"。所以基本上他们是相互排斥的。一起使用它们将导致错误。

,无论你做什么都没关系

答案 1 :(得分:1)

--rm--restart无法在Dockerfile中定义。选项也是互斥的。 docker run仅允许使用其中一个。

Docker Compose文件允许您为容器设置restart选项。但是,删除容器更像是up --builddownrm之类的其他撰写命令的生命周期事件,而不是您分配给容器的事件。

答案 2 :(得分:0)

docker run

--rm  Automatically remove the container when it exits
--restart string   Restart policy to apply when a container exits (default "no")
Possible values are : no, on-failure[:max-retry], always, unless-stopped

用户docker maven的一个示例

docker run \
--rm \
-v /root/.m2:/root/.m2 \
-v /my/java/proj:/usr/src/mymaven \
-w /usr/src/mymaven \
maven:3.3.3-jdk-8 mvn clean package