我怎样才能运行容器分离,并让他们在退出时自动删除?

为什么Docker中的-d--rm相互冲突?

 $ docker run -d --rm image Conflicting options: --rm and -d 

我有一些运行单元/function/集成testing的容器。 Docker容器启动,运行testing,然后停止。 我把它们分开运行,因为我只关心结果,但是我也希望容器在容器退出后被移除。 什么将是一个很好的方法来做到这一点?

目前(Docker v1.1.1),这个function不被支持。 --rm特性的开发人员在他的PR#1589中解释了原因:

目前仅在未提供-d时才支持。 自动删除通过docker run -d创build的容器是没有意义的。 这样做的原因有两个:1)在移除容器之前,我们可能想检索某种退出状态或日志2)使得在服务器端运行在当前体系结构中是困难的。

好消息是,有人已经开了一个问题来解决这个问题 ,所以你可以在那里进行讨论。

此外,解决方法不是太复杂,您可以使用包装脚本运行您的容器,如下所示:

 ID=$(docker run -d ubuntu sleep 3) docker wait $ID docker rm $ID 

这些选项不再与Docker版本1.13.0相冲突

有一个pull请求移动了--rm选项守护进程,允许使用删除选项运行容器分离: https : //github.com/docker/docker/pull/20848