Rom*_*man 119 docker docker-image
我在尝试
docker rmi c565603bc87f
Run Code Online (Sandbox Code Playgroud)
错误:
来自守护程序的错误响应:冲突:无法删除c565603bc87f(无法强制) - 图像具有依赖子图像
因此即使使用-f标志也无法删除图像.如何删除图像然后及其所有孩子?
Linux和docker版本:
uname -a Linux goracio-pc 4.4.0-24-generic#43-Ubuntu SMP Wed Jun 8 19:27:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
docker version客户端:版本:1.11.2 API版本:1.23 Go版本:go1.5.4 Git commit:b9f10c9内置:Wed Jun 1 22:00:43 2016 OS/Arch:linux/amd64
服务器:版本:1.11.2 API版本:1.23 Go版本:go1.5.4 Git commit:b9f10c9内置:Wed Jun 1 22:00:43 2016 OS/Arch:linux/amd64
Ngu*_*Son 81
在删除图像之前,您应该尝试删除不需要的图像:
docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
Run Code Online (Sandbox Code Playgroud)
之后:
docker rmi c565603bc87f
Run Code Online (Sandbox Code Playgroud)
bba*_*ker 51
在某些情况下(比如我的情况),您可能会尝试通过指定具有多个您未实现的标记的图像ID来删除图像,其中一些标记可能被其他图像使用.在这种情况下,您可能不想删除图像.
如果您有如此处所述的冗余标签,请docker rmi <image_id>使用docker rmi <repo:tag>您想要删除的冗余标签.
小智 30
使用以下内容查找在相关图像之后创建的所有图像的图像ID和父ID:
docker inspect --format='{{.Id}} {{.Parent}}' $(docker images --filter since=<image_id> -q)
Run Code Online (Sandbox Code Playgroud)
然后你调用命令:
docker rmi {sub_image_id}
Run Code Online (Sandbox Code Playgroud)
"sub_image_id"是从属图像的ID
gre*_*pit 23
所有以前的答案都是正确的,但这里只是一个解决方案,它只是强行删除你的所有图像(使用此命令需要您自担风险将删除所有图像)
docker rmi $(docker images -q) -f
Run Code Online (Sandbox Code Playgroud)
Edu*_*sta 20
对我有用的是使用REPOSITORY:TAG组合而不是IMAGE ID.
当我尝试docker rmi <IMAGE ID>使用没有与此图像关联的容器的命令删除docker镜像时,我收到了以下消息:
$ docker rmi 3f66bec2c6bf
Error response from daemon: conflict: unable to delete 3f66bec2c6bf (cannot be forced) - image has dependent child images
Run Code Online (Sandbox Code Playgroud)
当我使用命令时,我可以成功删除 docker rmi RPOSITORY:TAG
$ docker rmi ubuntu:18.04v1
Untagged: ubuntu:18.04v1
Run Code Online (Sandbox Code Playgroud)
小智 14
该命令删除了所有图像(小心使用)
您是否尝试过使用--force
sudo docker rmi $(sudo docker images -aq) --force
Run Code Online (Sandbox Code Playgroud)
上面的代码运行起来就像一个魅力,即使我也遇到了同样的问题
Cam*_*uoi 12
如果你想 Untag Docker Images
docker rmi <rep:tag>
Run Code Online (Sandbox Code Playgroud)
如果你想 Removing Docker Images
docker image rm <image_id>
Run Code Online (Sandbox Code Playgroud)
例如:键入docker image ls以显示图像信息
REPOSITORY TAG IMAGE ID CREATED SIZE
python 3.6 60f85556d5d2 4 days ago 174MB
Run Code Online (Sandbox Code Playgroud)
码头工人 rmi 蟒蛇:3.6
泊坞窗图像 rm 60f85556d5d2
小智 8
尝试删除图像 ID:b721d1cdaac7
docker rmi b721d1cdaac7 -f
Run Code Online (Sandbox Code Playgroud)
响应:来自守护程序的错误响应:冲突:无法删除 b721d1cdaac7(无法强制)- 映像具有依赖的子映像
要删除所有子图像命令:
docker image rm $(docker images --filter since=b721d1cdaac7 -q) -f
Run Code Online (Sandbox Code Playgroud)
它将首先取消标记并删除所有子图像
这是一个删除图像的脚本以及依赖它的所有图像.
#!/bin/bash
if [[ $# -lt 1 ]]; then
echo must supply image to remove;
exit 1;
fi;
get_image_children ()
{
ret=()
for i in $(docker image ls -a --no-trunc -q); do
#>&2 echo processing image "$i";
#>&2 echo parent is $(docker image inspect --format '{{.Parent}}' "$i")
if [[ "$(docker image inspect --format '{{.Parent}}' "$i")" == "$1" ]]; then
ret+=("$i");
fi;
done;
echo "${ret[@]}";
}
realid=$(docker image inspect --format '{{.Id}}' "$1")
if [[ -z "$realid" ]]; then
echo "$1 is not a valid image.";
exit 2;
fi;
images_to_remove=("$realid");
images_to_process=("$realid");
while [[ "${#images_to_process[@]}" -gt 0 ]]; do
children_to_process=();
for i in "${!images_to_process[@]}"; do
children=$(get_image_children "${images_to_process[$i]}");
if [[ ! -z "$children" ]]; then
# allow word splitting on the children.
children_to_process+=($children);
fi;
done;
if [[ "${#children_to_process[@]}" -gt 0 ]]; then
images_to_process=("${children_to_process[@]}");
images_to_remove+=("${children_to_process[@]}");
else
#no images have any children. We're done creating the graph.
break;
fi;
done;
echo images_to_remove = "$(printf %s\n "${images_to_remove[@]}")";
indices=(${!images_to_remove[@]});
for ((i="${#indices[@]}" - 1; i >= 0; --i)) ; do
image_to_remove="${images_to_remove[indices[i]]}"
if [[ "${image_to_remove:0:7}" == "sha256:" ]]; then
image_to_remove="${image_to_remove:7}";
fi
echo removing image "$image_to_remove";
docker rmi "$image_to_remove";
done
Run Code Online (Sandbox Code Playgroud)
建立在西蒙·布雷迪的蛮力方法在这里,如果你没有一吨的图片,你可以使用此外壳功能:
recursive_remove_image() {
for image in $(docker images --quiet --filter "since=${1}")
do
if [ $(docker history --quiet ${image} | grep ${1}) ]
then
recursive_remove_image "${image}"
fi
done
echo "Removing: ${1}"
docker rmi -f ${1}
}
Run Code Online (Sandbox Code Playgroud)
然后使用recursive_remove_image <image-id>.
请运行此 docker 命令
docker image rm -f $(docker image ls --filter dangling=true -q)然后运行
docker image rm -f $(docker image ls -a -q)经过几个小时的工作后,我发现上述命令非常有帮助。
| 归档时间: |
|
| 查看次数: |
108162 次 |
| 最近记录: |