docker container
包括一个可选的--rm
标志,其说明如下:
退出时自动删除容器
因此,包含--rm
将在容器停止后删除容器,而不包含该标志将在容器停止后保留容器。
我发现自己每次启动容器时都会使用这个标志,事实上,我从来没有遇到过不需要--rm
标志的用例。
根据Docker最佳实践,容器应该是短暂的,因此在容器停止后保留它似乎是一种反模式。
两个问题:
1.排除--rm
标志是否是一种好的情况?
1.如果排除-rm
标志如此罕见,那么为什么--rm
不是默认行为?
- 问题2假设**
我怀疑问题2的答案是基于Docker删除对象的保守方法。根据pruning docs:
Docker采用保守的方法来清理未使用的对象(通常称为"垃圾收集"),例如映像、容器、卷和网络:这些对象通常不会被删除,除非您明确要求Docker这样做。
Docker可能不想删除对象并让用户感到惊讶,因为该操作无法撤消。
1条答案
按热度按时间6ie5vjzr1#
我通常使用
--rm
(容器退出时删除)或-d
(后台运行)选项;几乎总是一个或另一个,但不是两者兼而有之。假设您启动了一个非常典型的服务容器并返回
你早上回来发现它已经退出了。
如果你也用
--rm
启动容器,容器的所有痕迹都会消失,你看不到它的退出状态,也不能查看它的docker logs
,这是一个令人沮丧的恢复情况。对于“一次性”容器,
--rm
可能是正确的。我不能说为什么有一个
--rm
选项,而不是一个--keep
选项,但它一直是这样,只要我一直在使用Docker。