为什么docker说-d和-rm是运行容器的冲突选项?

时间:2017-12-07 14:10:27

标签: docker

一个小问题但是我想在dev中使用docker run --rm运行docker容器,以便在我停止它之后不必删除它们,特别是因为我更改了命令行参数几乎每次运行。

但是,如果我不使用stdout,我的容器就会大量登录docker run -d

然后我再也不能使用--rm了,因为docker抱怨:

[adam@gondor ~]$ docker run --rm -d -p 10040:443 --name rproxy adam-rproxy
Conflicting options: --rm and -d

不可否认,我可以在命令行上一起运行stop和rm:

docker stop rproxy; docker rm rproxy

但是我知道我会忘记,生气并开始担心我会走出自闭症谱系!

docker run options

2 个答案:

答案 0 :(得分:3)

Docker在1.13.0中将--rm移动到服务器端操作时添加了-d--rm的功能。这已在PR 20848中介绍。在此版本之前,删除是在docker客户端上处理的,并且在分离模式下,客户端没有监视容器以检测退出。

您需要在客户端和服务器上至少升级到此版本才能使用此功能。我建议升级到17.09,因为它是current stable CE release

答案 1 :(得分:0)

我无法重现这一点。

以下分离很好,可以在Docker version 17.09.0-ce, build afdb6d4中停止正常(根据需要删除):

docker run --rm -d --name yes alpine:3.7 yes

我还尝试添加一些端口以更贴近您的示例,但这也没有问题。