如何运行分离的容器并在退出时自动将其删除?

时间:2014-07-15 17:10:38

标签: docker

Docker中为什么-d--rm存在冲突?

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

我有许多运行单元/功能/集成测试的容器。 Docker容器启动,运行测试,然后停止。因为我只关心结果,所以我将它们分开运行,但我也希望在容器退出后将容器移除。什么是一个好方法呢?

2 个答案:

答案 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