docker - 如何避免使用太多容器来破坏 Docker?

我的故事

曾几何时我打电话Docker从 PHP laravel 队列处理数千个媒体文件。我的代码将为我想要完成的每个任务创建一个新容器(例如“处理”、“搜索”、“切片”等)。然后我上床 sleep ,灾难来了。我醒来发现一个 1TB 的日志文件,以及处于不同状态的几十万个容器。

Docker 不再工作了。比如,当我输入 docker version 时(或 docker anything 就此而言)它只是坐在那里凝视。我想避免重新安装,但我无法通过标准 docker rm $(docker ps -a -q) 移除容器因为 Docker 变得非常非常沮丧。

我的问题

  • 如果 docker 守护进程没有响应,如何删除 docker 容器?
  • 我的代码使用 Docker 作为使用 docker API 的美化可执行文件。将来我需要我的代码采取哪些额外的步骤来清理自己?
  • 总的来说,我注意到当我尝试同时启动太多(即 20 个)容器时,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)
    

    最佳答案

    我做了一些挖掘。

    How can I remove docker containers if the docker daemon isn't responding?



    在 Ubuntu 中,容器存储在 /var/lib/docker/containers 中。目录。删除该目录的内容,事情就好多了。这将存在于其他地方,具体取决于您的系统和安装配置。

    此外,对于任何好奇的人来说,大约有 25 万个容器必须被移除。考虑到文件的数量,我不得不使用令人难以置信的危险:ls /var/lib/docker/containers | xargs -n200 rm -rf

    I'm using Docker as a glorified executable being called from code using their API. What extra steps do I need my code take to clean after itself in future?



    如果容器不再使用,您应该在完成后正式“删除”它。在命令行上,这将使用 docker rm $(containername) 完成在代码中,它将完全取决于访问 docker 的方式。我听说你也可以使用 docker run --rm 运行 docker这将在关闭后清理。

    我发现即使在尝试以编程方式删除之后,也会出现容器不会关闭的情况。为了防止这种情况,我设置了一个定期运行的 cron docker ps -a | awk '{print $1}' | xargs docker rm

    I have noticed that when I try to spin up too many (i.e. 20) containers at the same time, Docker was prone to timing out.



    一旦我清除了一切,这就会停止,但是我仍然认为我应该在这个用例中使用更像 Docker Swarm 的东西。在我的情况下,我决定简单地设置生产环境以消除那里对 docker 的需求(这是它使用多线程的地方)。

    https://stackoverflow.com/questions/34191440/

    相关文章:

    python - Opencv 和 Python 的问题

    opencv - opencv_gpu编译问题

    c# - 使用cvTransform和cvGetAffineTransform openCv调整矩形

    visual-c++ - 如何在 IplImage 上使用 calcCovarMatrix?

    opencv - CMake和OpenCV 2.3的麻烦

    opencv - “QImage with no type”编译错误消息

    visual-c++ - Opencv中cv MatchTemplate()函数的用法

    iphone - iPhone中的OpenCV面部追踪器

    python - OpenCV Python 库中的 cv.cornerSubPix 参数

    .net - 尝试调用两个功能时Windows窗体卡住