Docker 守護程式掛起 - 缺少容器狀態檔案?

Docker 守護程式掛起 - 缺少容器狀態檔案?

我在 AWS Linux 上運行 Docker 1.12.6。

所有docker命令都掛起。

今天早上AWS實例崩潰了(仍然不知道為什麼)。重新啟動不起作用,因此我停止並啟動了實例。當我查看時/var/log/docker我得到:

time="2017-01-16T10:46:18.829402768Z" level=info msg="libcontainerd: new containerd process, pid: 21697" 
time="2017-01-16T10:46:18.833508272Z" level=fatal msg="open /var/run/docker/libcontainerd/containerd/054f92393f757e0418b014ed1fa35673fbce2293de43e42153f4e10ec4910c77/state.json: no such file or directory"

容器目錄存在,但僅包含一個空init目錄。對其他容器的隨機搜尋顯示了相同的情況。

我認為丟失的文件導致了掛起。我該如何恢復?

編輯:

最終刪除然後重新安裝,收到訊息:

Cannot connect to the Docker daemon. Is the docker daemon running on this host?

啟動了Docker服務,現在又掛了。

答案1

我解決了我的問題

  1. 服務泊塢窗戶停止
  2. 前往 /var/run/docker 並刪除與容器 id 相關的任何目錄
  3. 前往 /var/lib/docker 並刪除與容器 id 相關的所有目錄
  4. 服務 docker 啟動

答案2

@Moreno 的答案對我有用,但有一點小小的改變:

  • 停止 docker 守護程式 ( sudo service docker stop)

  • 刪除containerd中的資料夾(為了以防萬一,我們也直接在libconteinerd中刪除了同名資料夾(/var/run/docker/libcontainerd/containerd)

  • 啟動 docker 守護程式

答案3

我遇到了同樣的問題。在花了相當多的時間處理這個問題後,我不得不回滾到舊的 AMI,直到我找到解決方案為止。最新的 ECS 代理程式 (1.13.1) 幾天前發布 - 我想知道這是否是我們的問題。

概述:

  • Docker 1.12.6
  • ECS Agent 1.13.1

實例啟動後,所有docker命令都會掛起。檢查/var/log/docker顯示:

level=info msg="libcontainerd: new containerd process, pid: 21687" 
level=fatal msg="open /var/run/docker/libcontainerd/containerd/{{CONTAINER_HASH}}/state.json: no such file or directory"

同樣的問題,其中libcontainerd包含一個空init目錄(state.json看不到!)

答案4

遇到同樣的問題。實例崩潰(原因未知)。 Docker 和 ECS 代理程式。重新安裝docker沒有幫助。

對我們有用的:

  • 手動殺死docker(殺死pid)
  • 刪除containerd中的資料夾(為了以防萬一,我們也直接在libconteinerd中刪除了同名資料夾(/var/run/docker/libcontainerd/containerd)
  • 重啟docker
  • 啟動ecs

在這裡看到: https://github.com/docker/docker/issues/30984

系統再次啟動並運作。

相關內容