当前位置: 首页 > 知识库问答 >
问题:

Docker说它不能删除图像,因为容器正在运行,但没有容器正在运行

华鹭洋
2023-03-14

简而言之:我想删除docker映像,但是如果我这样做,它会告诉我不能删除它,因为该映像正在被运行的容器使用。但是据我所知,根本没有容器在运行。

详细信息:我调用docker images-a查看调用图像。通过这种方式,我确定了要删除的图像ID,并调用docker Image rm{ID},其中{ID}是应该删除的字符串(它适用于其他图像,因此到目前为止我非常有信心)。我得到的答复是:

来自守护程序的错误响应:冲突:无法删除{ID}(无法强制)-运行容器08815cd48523正在使用映像(末尾的ID似乎随着每次调用而更改)

这个错误看起来很容易理解,但是如果我调用docker ps-a,它会显示我没有运行单个容器,因此没有使用指定ID运行的容器。

这个问题发生在一些图像上。但似乎都和库伯内特斯有关。有人知道问题出在哪里吗?

在评论中要求听到docker检查一个不可见的容器(我替换了所有部分,我不确定它是否包含敏感数据与removed_for_post):

[
    {
        "Id": "Removed_for_post",
        "Created": "2021-10-05T07:04:33.2059908Z",
        "Path": "/pause",
        "Args": [],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 3570,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2021-10-05T07:04:33.4266642Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:80d28bedfe5dec59da9ebf8e6260224ac9008ab5c11dbbe16ee3ba3e4439ac2c",
        "ResolvConfPath": "/var/lib/docker/containers/ Removed_for_post /resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/ Removed_for_post /hostname",
        "HostsPath": "/var/lib/docker/containers/ Removed_for_post /hosts",
        "LogPath": "/var/lib/docker/containers/ Removed_for_post / Removed_for_post -json.log",
        "Name": "/k8s_POD_etcd-docker-desktop_kube-system_ Removed_for_post ",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": null,
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "host",
            "PortBindings": {},
            "RestartPolicy": {
                "Name": "",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "CapAdd": null,
            "CapDrop": null,
            "CgroupnsMode": "host",
            "Dns": null,
            "DnsOptions": null,
            "DnsSearch": null,
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "shareable",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": -998,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": [
                "no-new-privileges"
            ],
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "ConsoleSize": [
                0,
                0
            ],
            "Isolation": "",
            "CpuShares": 2,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "/kubepods/kubepods/besteffort/removed_for_Post",
            "BlkioWeight": 0,
            "BlkioWeightDevice": null,
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": null,
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "KernelMemory": 0,
            "KernelMemoryTCP": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": false,
            "PidsLimit": null,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0,
            "MaskedPaths": [
                "/proc/asound",
                "/proc/acpi",
                "/proc/kcore",
                "/proc/keys",
                "/proc/latency_stats",
                "/proc/timer_list",
                "/proc/timer_stats",
                "/proc/sched_debug",
                "/proc/scsi",
                "/sys/firmware"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ]
        },
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/ Removed_for_post -init/diff:/var/lib/docker/overlay2/ Removed_for_post /diff",
                "MergedDir": "/var/lib/docker/overlay2/Removed_for_post /merged",
                "UpperDir": "/var/lib/docker/overlay2/Removed_for_post /diff",
                "WorkDir": "/var/lib/docker/overlay2/Removed_for_post /work"
            },
            "Name": "overlay2"
        },
        "Mounts": [],
        "Config": {
            "Hostname": "docker-desktop",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": null,
            "Image": "k8s.gcr.io/pause:3.2",
            "Volumes": null,
            "WorkingDir": "/",
            "Entrypoint": [
                "/pause"
            ],
            "OnBuild": null,
            "Labels": {
                "annotation.kubeadm.kubernetes.io/etcd.advertise-client-urls": "https://192.168.65.4:2379",
                "annotation.kubernetes.io/config.hash": " Removed_for_post ",
                "annotation.kubernetes.io/config.seen": "2021-10-05T07:04:32.243805800Z",
                "annotation.kubernetes.io/config.source": "file",
                "component": "etcd",
                "io.kubernetes.container.name": "POD",
                "io.kubernetes.docker.type": "podsandbox",
                "io.kubernetes.pod.name": "etcd-docker-desktop",
                "io.kubernetes.pod.namespace": "kube-system",
                "io.kubernetes.pod.uid": "removed for Post",
                "tier": "control-plane"
            }
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": " Removed_for_post",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {},
            "SandboxKey": "/var/run/docker/netns/default",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "",
            "Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "",
            "IPPrefixLen": 0,
            "IPv6Gateway": "",
            "MacAddress": "",
            "Networks": {
                "host": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": " Removed_for_post ",
                    "EndpointID": " Removed_for_post ",
                    "Gateway": "",
                    "IPAddress": "",
                    "IPPrefixLen": 0,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "",
                    "DriverOpts": null
                }
            }
        }
    }
]``

共有1个答案

辛才俊
2023-03-14

您的容器似乎是由docker compose之类的其他工具创建的,因为我猜它在您的计算机上是本地的。。

这意味着您无法使用docker rm语句轻松停止其创建。

  • 您似乎正在使用docker desktop

k8s_POD_etcd-docker-desktop_kube-system_Removed_for_post

因此,由于它是kubernetes组件的一部分,只有在不想使用kubernetes时才应该删除它。

通过移除kubernetes或etcd吊舱。

如果docker桌面,应该不是问题。

总之,您的容器是由一个pod创建的,该pod是由kubernetes处理的资源

  • 查找docker compose目录,通常容器名称以项目名称开头,并进入其目录。
  • 尝试重新启动docker守护程序,例如在基于linux的环境中:sudo systemctl restart docker
  • 重新启动你的机器也应该可以

最后,您应该能够按照问题中的建议移除容器。

 类似资料:
  • 我记得用过 几个月前没有问题地链接命令,但现在这不起作用了,我得到了以下输出: 什么改变了?如何在一行中删除所有Docker运行容器?如果有用的话,我正在Windows ;10上使用Docker for Windows(本机与Hyper-V一起使用,而不是与VirtualBox一起使用),我使用的命令在以前的Windows 8 Docker工具箱安装中运行良好。

  • 问题内容: 我希望实用地停止并删除docker容器(如果正在运行)。这是用于构建脚本的。 请看下面的例子。我将如何停止和删除docker容器“ rabbitmq”,如bash脚本中的NAMES列所示。 以下命令将删除容器并执行即时通讯 但是它把它组合成一个我想知道的脚本吗?我认为它看起来像这样。 问题答案: 您可能已经注意到,如果容器不存在或未运行,则退出并显示状态代码以指示失败。这导致您的构建失

  • 我正在运行2个spring boot应用程序:一个客户端和rest-api。客户机与rest-api通信,rest-API与mongodb数据库通信。所有3层都在docker容器中运行。 我启动容器,通常指定docker文件中公开的端口,并将它们映射到主机上的端口,例如:-p 7070:7070,其中7070是docker文件中公开的端口。 当我通过< code > Java-jar[applic

  • 问题内容: 我在CI和CD上创建了Jenkinsfile,Dockerfile,Dockerfile.test到CI和CD,在GitHub上构建了我的服务器API,我在Jenkins上构建了该构建,并且构建成功,并且我的docker在Jenkinsfile阶段也在容器上运行,我创建了用于测试和部署在服务器API上,并使用docker作为容器 我也使用docker-compose在docker上运行

  • 问题内容: 是否可以备份正在运行的Docker容器?该命令适合这样做吗? 问题答案: 一位朋友发表了评论 您好Slava,很抱歉您的问题已关闭。作为记录,Slava谈论的是docker.io,这是Linux容器的运行时。是的,这是一种合适的方法。它将生成整个容器文件系统状态的压缩包,并将其转储到stdout上。所以 将产生可用的tarball。您可以使用以下命令重新导入压缩包 请注意,原始元数据(

  • 问题内容: 我正在服务器上运行多个docker容器,并且需要对所有容器上的存储库执行git pull。 我试过使用此: 但是它会出错: 它曾经工作过,但是后来突然停止工作,没有明显原因(我没有更改任何docker配置) 注意:的输出仅是容器ID: 问题答案: 使用Docker exec可以一次在容器上运行该命令,但是从您要在所有正在运行的容器上运行该命令的问题出发,就可以了。 我假设git已经安装