我有停止容器然后将其删除的脚本
If T_ANAME.Text = "" Or R_MALE.Checked = False Or R_FEMALE.Checked = False Or R_OTHERS.Checked = False _
Or (C_COUNTRY.Text = "-- Select Country --") _ Then
End If
但我不想删除名为" my_docker"的
的docker容器。如何删除除此之外的所有容器?
答案 0 :(得分:25)
你可以试试这个,
grep -v
),然后运行此命令:
docker rm $(docker ps -a | grep -v "my_docker" | awk 'NR>1 {print $1}')
要使用cut
代替awk
,请尝试以下操作:
docker rm $(docker ps -a | grep -v "my_docker" | cut -d ' ' -f1)
此处使用awk
/ cut
的示例:bash: shortest way to get n-th column of output
答案 1 :(得分:9)
问题的标题要求图片,不是容器。对于那些想要删除除一个以外的所有图片的问题的绊脚石,您可以使用 docker prune 以及过滤器标记:
docker image prune -a --force --filter "label!=image_name"
将image_name替换为图像名称。
你也可以使用"直到="标记按日期修剪图像。
答案 2 :(得分:5)
这就是docker rm $(List of container Ids)
实际发生的事情。所以这只是一个如何过滤容器ID列表的问题。
例如:如果您要删除所有容器,但要删除具有特定容器ID的容器,那么此docker rm $(docker ps -a -q | grep -v "my_container_id")
就可以了。
答案 3 :(得分:2)
对于那些想要排除多个容器的人,只需添加
grep -v "container_name2" |
在grep -v“ container_name1”命令之后。 最终命令可能类似于
docker rm $(docker ps -a | grep -v "my_docker1" | grep -v "my_docker2" | cut -d ' ' -f1)
答案 4 :(得分:1)
我更喜欢使用(未经测试的)
的行来测试容器名称 docker inspect --format '{{ .Name }}' $(docker ps -aq)
这将给出(运行或不运行)容器的名称,您可以过滤和
docker rm
使用此信息
答案 5 :(得分:0)
老问题,但我喜欢复活帖子。
对于这种情况,您可以使用Spotify的Docker GC:https://github.com/spotify/docker-gc#excluding-containers-from-garbage-collection
你可以这样做:
echo "my_docker" >> /tmp/docker-gc-exclude-containers
echo '*' > /tmp/docker-gc-exclude
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -v /etc:/etc:ro -v /tmp/docker-gc-exclude-containers:/etc/docker-gc-exclude-containers:ro -v /tmp/docker-gc-exclude:/etc/docker-gc-exclude:ro spotify/docker-gc
(如果您也想清除图像,可以避免挂载docker-gc-exclude
文件)
答案 6 :(得分:0)
停止
docker stop $(docker ps -a -q | grep -v "my_container_id")
要删除
docker rm $(docker ps -a -q | grep -v "my_container_id")
答案 7 :(得分:0)
我是通过以下命令实现的:
docker image rm -f $(docker images -a | grep -v "image_repository_name" | awk 'NR>1 {print $1}')
答案 8 :(得分:0)
删除除node
图像以外的所有图像
sudo docker rmi -f $(sudo docker image ls -a | grep -v "node" | awk 'NR>1 {print $3}')
答案 9 :(得分:0)
我知道它的后期响应很少,但是它可以帮助任何Windows用户。这是我准备的命令:
docker rmi $(
docker image list -a --no-trunc --format "table {{.ID}},{{.Repository}}" |
Where-Object {
$_ -NOTMATCH "mcr.microsoft.com/dotnet/core/aspnet" -and
$_ -NOTMATCH "ubuntu" -and
$_ -NOTMATCH "busybox" -and
$_ -NOTMATCH "alpine"
} | Select-Object -Skip 1 | %{ $_.Split(',')[0];}
)
答案 10 :(得分:-2)
也许您可以启动所有不想修剪的容器。然后,运行:
docker container prune -a