运行docker run时,您可以选择添加--rm和--restart。但是如何在dockerfile中获得相同的效果?
答案 0 :(得分:2)
Dockerfile用于指定构建图像的指令。
构建映像后,可以使用docker run
命令从该映像启动容器。 --rm
和--restart
是docker run
的选项,这意味着这些命令适用于容器。使用--restart
标志可以为容器指定重新启动策略。 --rm
标志用于在容器退出时删除容器上的文件系统。
我希望您能看到为什么这两个标志提供的功能不属于Dockerfile。如果没有,你应该真正阅读有关Docker的更多信息(特别是图像与容器)。
此外:
--rm
删除文件系统并清理容器。 restart
仅用于重新启动容器,文件系统在重新启动之间消失将是非常不愉快的。另请注意,文件系统删除后重新启动更像是"重新启动"而不是"重启"。所以基本上他们是相互排斥的。一起使用它们将导致错误。
答案 1 :(得分:1)
--rm
和--restart
无法在Dockerfile中定义。选项也是互斥的。 docker run
仅允许使用其中一个。
Docker Compose文件允许您为容器设置restart
选项。但是,删除容器更像是up --build
,down
和rm
之类的其他撰写命令的生命周期事件,而不是您分配给容器的事件。
答案 2 :(得分:0)
--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