提问者:小点点

如何拆除旧码头集装箱


这个问题与我是否应该关心多余的,非运行的,Docker容器有关?。

我在想怎么把旧容器搬走。Docker RM3e552code34a允许您删除一个,但是我已经有很多了。DockerRM--help不提供选择选项(与所有选项一样,也不提供图像名称)。

也许有一个目录存储这些容器,我可以很容易地手动删除它们?


共3个答案

匿名用户

从Docker 1.13.x开始,您可以使用Docker容器修剪:

docker container prune

这将删除所有停止的容器,并应以相同的方式在所有平台上工作。

还有一个Docker系统修剪:

docker system prune

它将在一个命令中清除所有未使用的容器,网络,映像(悬空的和未引用的)以及卷(可选)。

对于较旧的Docker版本,您可以将Docker命令与其他Unix命令一起字符串化,以获得所需的内容。下面是一个关于如何清理已有几周时间的旧容器的示例:

$ docker ps --filter "status=exited" | grep 'weeks ago' | awk '{print $1}' | xargs --no-run-if-empty docker rm

为了给出信用,这个例子来自https://twitter.com/jpetazzo/status/347431091415703552。

匿名用户

另一个方法,我从Guillaume J.Charmes那里得到的(功劳在哪里):

docker rm `docker ps --no-trunc -aq`

将以优雅的方式移除所有容器。

Bartosz Bilicki为Windows:

FOR /f "tokens=*" %i IN ('docker ps -a -q') DO docker rm %i

对于PowerShell:

docker rm @(docker ps -aq)

Docker 1.13的更新(2016年第4季度),归功于VonC(本线程后面部分):

Docker系统修剪将删除所有未使用的数据(即,按顺序:容器已停止,没有容器的卷和没有容器的映像)。

请参阅PR 26108和commit86de7c0,它们引入了一些新命令,以帮助可视化Docker守护程序数据在磁盘上占用了多少空间,并允许轻松地清理“不必要的”多余空间。

docker system prune

WARNING! This will remove:
    - all stopped containers
    - all volumes not used by at least one container
    - all images without at least one container associated to them
Are you sure you want to continue? [y/N] y

匿名用户

更新的答案现在使用Docker系统修剪Docker容器修剪。见Vonc更新的答案。

前面的答案综合了上面几个不同的提示,移除所有非运行容器的最优雅的方法似乎是:

docker rm$(docker ps-q-f status=exited)

  • -q只打印容器ID(不带列标题)
  • -f允许您筛选打印容器列表(在本例中,我们正在筛选以仅显示已退出的容器)

相关问题