gpt4 book ai didi

docker - 无法使用 docker ps -a 列出已停止的容器

转载 作者:行者123 更新时间:2023-12-02 11:55:07 26 4
gpt4 key购买 nike

我尝试使用 docker rmi image_id 删除图像和终端输出Error response from daemon: conflict: unable to delete dd85c346890b (must be forced) - image is being used by stopped container b91e905c2b8e .然后我尝试使用 docker ps -a 列出容器但它没有显示。然后我尝试了docker inspect b91e905c2b8e它确实存在。我可以使用 docker rm b91e905c2b8e 删除容器.
为什么使用 docker ps -a 未显示容器.使用 kubectl apply pod_config.yaml 创建容器.这会影响 docker 吗?
编辑:
pod .yaml

apiVersion: v1 
kind: Pod
metadata:
name: my-pod
labels:
component: web
spec:
containers:
- name: client
image: imageB // original is imageA
ports:
- containerPort: 3000

最佳答案

快速解决方案:

docker --host unix:///$HOME/Library/Containers/com.docker.docker/Data/docker.raw.sock ps -a
解释:
从 Docker 开发人员的角度来看,这似乎是一种预期的行为。
Mac 版本的 Docker 使用特定的套接字将 docker-cli 连接到在 Hyperkit VM 上运行的守护进程。
如果您使用 Docker.app 附带的或单独安装的 docker 二进制文件,它的工作方式完全相同。
幸运的是 Docker-desktop for MacOS 创建了两种套接字:
用于 Docker 桌面应用程序需求的“过滤”套接字(默认使用),可能与其 Kubernetes 实现有关:
$HOME/Library/Containers/com.docker.docker/Data/docker.sock
和未过滤的:
$HOME/Library/Containers/com.docker.docker/Data/docker.raw.sock
为了显示差异,我复制了您的情况,并在 b2f1fed9c793 状态下获得了 ID 为 Exited 的容器:
$ docker inspect b2f1fed9c793 | grep Status
"Status": "exited",

$ docker ps -a | grep b2f1fed9c793
# empty output
当我运行连接到不同套接字的相同命令时,我得到不同的结果,只有原始套接字显示退出的容器:
$ docker --host unix:///$HOME/Library/Containers/com.docker.docker/Data/docker.sock ps -a | grep b2f1fed9c793
# empty output

$ docker --host unix:///$HOME/Library/Containers/com.docker.docker/Data/docker.raw.sock ps -a | grep b2f1fed9c793
b2f1fed9c793 nginx "nginx -g 'daemon of…" 40 minutes ago Exited (0) 39 minutes ago k8s_nginx_nginx3_default_2a5ed89d-ccff-4561-a320-676603d30619_4
默认套接字给出 0 行退出容器:
$ docker --host unix:///$HOME/Library/Containers/com.docker.docker/Data/docker.sock ps -a | grep Exited | wc -l 
0
但原始套接字给出 22:
$ docker --host unix:///$HOME/Library/Containers/com.docker.docker/Data/docker.raw.sock ps -a | grep Exited | wc -l 
22
要默认使用 raw socked,您可以创建一个别名:
$ alias docker="docker --host unix:///$HOME/Library/Containers/com.docker.docker/Data/docker.raw.sock"

$ docker ps -a | grep Exited | wc -l
22
该解决方案最初由 lalyosissue comment 中提出,但他解决的问题略有不同。

关于docker - 无法使用 docker ps -a 列出已停止的容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63316049/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com