如何在 dockerfile 中执行 --rm 和 --restart 操作?

J. *_*Eng 6 docker dockerfile

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

You*_*ice 9

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

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

我希望您能明白为什么这两个标志提供的功能不属于 Dockerfile。如果没有,您真的应该阅读更多有关 Docker 的内容(尤其是镜像与容器)。

添加:

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

  • 在某些情况下,文件系统在重新启动之间消失是非常理想的。例如,一个服务器容器应该是无状态的,但碰巧将临时文件写入磁盘。如果它崩溃了,您可能希望自动清除它。这显然取决于具体情况,但崩溃后重新开始通常是一件好事。 (2认同)

Mat*_*att 3

--rm并且--restart不能在Dockerfile中定义。这些选项也是互斥的。docker run只允许使用其中之一。

Docker Compose文件允许您设置restart容器的选项。不过,容器删除更多的是其他 compose 命令(如 、 )的生命周期事件up --builddownrm不是分配给容器的事件。