Docker中为什么-d
和--rm
存在冲突?
$ docker run -d --rm image
Conflicting options: --rm and -d
我有许多运行单元/功能/集成测试的容器。 Docker容器启动,运行测试,然后停止。因为我只关心结果,所以我将它们分开运行,但我也希望在容器退出后将容器移除。什么是一个好方法呢?
答案 0 :(得分:29)
目前(Docker v1.1.1),不支持此功能。
--rm
功能的开发人员在PR #1589中解释了原因:
仅在未提供-d时才支持它。自动删除通过docker run -d创建的容器没有意义。有两个原因可以通过这种方式实现:1)我们可能希望在删除容器之前检索某种退出状态或日志2)在当前体系结构中,在服务器端进行此操作很困难。
好消息是有人已经开了issue to fix this,所以你可以按照那里的讨论进行讨论。
此外,解决方法不是太复杂,您可以使用包装脚本运行容器,如下所示:
ID=$(docker run -d ubuntu sleep 3)
docker wait $ID
docker rm $ID
答案 1 :(得分:14)
这些选项不再与Docker 1.13.0版本冲突
有一个pull请求移动--rm
选项守护程序端,并允许使用remove选项运行分离的容器:https://github.com/docker/docker/pull/20848