这个问题与我是否应该关注过量的、未运行的Docker容器有关。
我想知道如何移除旧容器。docker rm 3e552code34a允许你删除一个,但我已经有很多了。Docker rm——help没有提供选择选项(像all一样,或者通过映像名称)。
也许有一个存放这些容器的目录,我可以很容易地手动删除它们?
这个问题与我是否应该关注过量的、未运行的Docker容器有关。
我想知道如何移除旧容器。docker rm 3e552code34a允许你删除一个,但我已经有很多了。Docker rm——help没有提供选择选项(像all一样,或者通过映像名称)。
也许有一个存放这些容器的目录,我可以很容易地手动删除它们?
当前回答
docker rm --force `docker ps -qa`
其他回答
如果你想移除所有容器,那么使用
码头集装箱修剪
该命令将删除所有容器
为什么不清理整个码头系统
Docker系统修剪
下面是一个脚本,用于删除创建时间超过2天的正在运行和已退出的容器:
#!/bin/bash
# This script will kill and remove containers older than 2 days.
#
docker ps -aq > /scripts/containers.txt
today=`date +%Y-%m-%d`
oldate=`date --date="2 day ago" +%Y-%m-%d`
while read p; do
cont=`docker inspect -f '{{ .Created }}' $p | cut -c 1-10`
echo " Created date of $p is $cont"
k=`echo $(( ( $(date -ud $today +'%s') - $(date -ud $cont +'%s'))/60/60/24 ))`
echo $k
if [ $k -ge 2 ];
then
echo "Killing docker container $p"
docker kill $p
echo "Removing docker container $p"
docker rm $p
else
echo "Docker container $p is not one day old, so keeping the container."
fi
done </scripts/containers.txt
新方法: Spotify /docker-gc发挥了作用。
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -v /etc:/etc spotify/docker-gc
超过一小时前离开的集装箱被移除。 删除之后不属于任何剩余容器的图像
它支持环境设置
强制删除具有多个标记的图像
FORCE_IMAGE_REMOVAL=1
强制删除容器
FORCE_CONTAINER_REMOVAL=1
从垃圾收集中排除最近退出的容器和图像
GRACE_PERIOD_SECONDS=86400
此设置还可以防止删除小于GRACE_PERIOD_SECONDS秒前创建的映像。
排练
DRY_RUN=1
清理孤立的容器卷 CLEAN_UP_VOLUMES = 1
参考:docker-gc
老办法:
删除旧的、未运行的容器
docker ps -a -q -f status=exited | xargs --no-run-if-empty docker rm
OR
docker rm $(docker ps -a -q)
删除与未运行的docker容器关联的所有映像
docker images -q | xargs --no-run-if-empty docker rmi
为docker 1.10版本清理孤立的docker卷。X及以上
docker volume ls -qf dangling=true | xargs -r docker volume rm
基于时间段
docker ps -a | grep "weeks ago" | awk "{print $1}" | xargs --no-run-if-empty docker rm
docker ps -a | grep "days ago" | awk "{print $1}" | xargs --no-run-if-empty docker rm
docker ps -a | grep "hours ago" | awk "{print $1}" | xargs --no-run-if-empty docker rm
docker rm --force `docker ps -qa`
我用的是:
docker rm -v $(docker ps -a -q -f status=exited)
删除已退出的容器:
docker rmi -f $(docker images | grep "<none>" | awk "{print \$3}")
为了摆脱所有未标记的图像。