web-dev-qa-db-ja.com

Dockerデーモンがハングしています-コンテナ状態ファイルがありませんか?

AWSLinuxでDocker1.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サービスを開始しましたが、再びハングしています。

2
schroeder

私はによって私の解決しました

  1. サービスドッカーストップ
  2. / var/run/dockerに移動し、コンテナIDに関連するディレクトリを削除します
  3. / var/lib/dockerに移動し、コンテナIDに関連するディレクトリを削除します
  4. サービスドッカースタート
3
MikeZ

@Morenoの答えは少しひねりを加えて私のために働いた:

  • dockerデーモンを停止します(Sudo service docker stop

  • Containerd内のフォルダーを削除します(念のため、libconteinerd(/ var/run/docker/libcontainerd/containerd)内の同じ名前のフォルダーも直接削除しました)

  • dockerデーモンを起動します

1
howaryoo

私は同じ問題に遭遇しました。これにかなりの時間を費やした後、私はこれに対する解決策を見つけるまで機能する古い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は表示されません!)

0
Matt