如何在dockerfile中执行–rm和–restart?
当你运行docker运行时,你可以select添加–rm和–restart。 但是,如何在dockerfile中获得相同的效果?
Dockerfile用于指定构build映像的指令。
构build映像后,可以使用docker run
命令从该映像启动容器。 --rm
和--restart
是--rm
--restart
的选项,这意味着这些命令适用于一个容器。 使用--restart
标志可以指定一个容器的重启策略。 --rm
标志用于在容器退出时删除容器上的文件系统。
我希望你能看到为什么这两个标志提供的function不属于Dockerfile。 如果没有,你应该更多地了解Docker(特别是图像vs容器)。
加成:
--rm
删除文件系统并清理容器。 restart
只用于重新启动一个容器,并且重新启动之间文件系统消失将是非常不愉快的。 另外请注意,删除文件系统后的重新启动更像是“重新启动”而不是“重新启动”。 所以基本上他们是互相排斥的。 一起使用会导致错误。 无所谓你在哪里做。
--rm
和--restart
不能在Dockerfile中定义。 选项也是相互排斥的。 docker run
只允许使用一个或另一个。
Docker Compose文件允许您为容器设置restart
选项。 容器的移除,更多的是其他组合命令的生命周期事件,比如up --build
, down
和rm
而不是分配给容器的东西。
docker运行
--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工具的一个例子
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