
我的故事
曾幾何時我在呼喚碼頭工人從 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 的存取方式。