我的故事
曾几何时,我呼唤Docker从 PHP laravel 队列处理数千个媒体文件。我的代码会为我想要完成的每个任务创建一个新容器(例如“处理”、“搜索”、“切片”等)。然后我上床睡觉,灾难降临了。我醒来时发现一个 1TB 的日志文件,以及几十万个处于不同状态的容器。
Docker 不再工作了。当我输入docker version
(或者docker anything
就此而言)时,它只是呆在那里,一动不动。我无法通过标准删除容器,docker rm $(docker ps -a -q)
因为 Docker 变得非常非常令人沮丧。
以下是有关我当前如何调用守护进程的相关信息:
$> sudo docker daemon
INFO[0000] API listen on /var/run/docker.sock
INFO[0000] [graphdriver] using prior storage driver "aufs"
(Meanwhile in another terminal)
$> docker version
(insert infinite darkness here)
我的问题
如果 docker 守护进程没有响应,我该如何删除 docker 容器?
我使用 Docker 作为美化可执行文件,使用其 API 从代码中调用。将来我需要采取哪些额外步骤来清理代码?
答案1
嗯,我做了一些调查。
如果 docker 守护进程没有响应,我该如何删除 docker 容器?
在 Ubuntu 中,容器存储在/var/lib/docker/containers
目录中。删除该目录的内容,一切就好多了。
此外,如果有人好奇的话,大约有 25 万个容器需要删除。考虑到我必须处理的文件数量ls /var/lib/docker/containers | xargs -n200 rm -rf
我使用 Docker 作为美化可执行文件,使用其 API 从代码中调用。将来我需要采取哪些额外步骤来清理代码?
如果不再使用容器,则应在完成后正式“删除”它。在命令行上,可以使用 来完成此操作docker rm $(containername)
;在代码中,这完全取决于如何访问 docker。