教えていただきたいこと
AWS EC2コンテナを再起動後、Dockerコマンドを打ってみると、どんなDockerコマンドを打っても応答が無くCtrl+C でコマンドを停止するしか方法が無い、という状態に陥りました。
自分なりに調べて対処したところ結果的には復旧したのですが、
- 復旧方法は妥当であるのか
- Dockerコマンドはなぜ応答が無かったのか(つまり、実際にDockerがどのような状態に陥っていたのか)
など、詳しいところがわかっていません。
どなたかお分かりになりましたら教えていただけないでしょうか。
環境
ホスト:AWS EC2 Amazon Linux
Docker:version 1.12.6, build 7392c3b/1.12.6
経緯
- Dockerコンテナを構築し、3ヶ月程度、普通に使用できていました。
- ある日、突然EC2インスタンスに接続できなくなった(SSHも含め)ため、一旦AWSのコンソールからEC2インスタンスを停止し、再度起動しました。
- 再起動後インスタンスにSSH接続してDockerコンテナを起動しようとしたところ、Dockerコマンドを投入すると一切応答が返ってこない状態になってしまいました。
不具合の状況
以下のように、一切のDockerコマンドが応答なしの状態になりました。
$ docker ps -a ^C (数分放置するも応答なしのためCtrl+Cで終了) $ $ docker images ^C (数分放置するも応答なしのためCtrl+Cで終了) $ $ docker version ^C (数分放置するも応答なしのためCtrl+Cで終了) $ $ docker -v Docker version 1.12.6, build 7392c3b/1.12.6 (これだけ応答あり) $
Dockerのサービスは立ち上がっている状態でした。
$ service docker status docker (pid 2629) を実行中...
Dockerサービスを再起動しても状況は変わりませんでした。
$ service docker restart docker を停止中: [ OK ] Starting docker: . [ OK ] $ $ docker images ^C (数分放置するも応答なしのためCtrl+Cで終了) $
調査した内容
ログ /var/log/docker の内容を調べました。
$ tail -n 100 /var/log/docker time="2017-03-24T11:00:54.098331916Z" level=error msg="failed to close stdin: rpc error: code = 2 desc = containerd: process not found for container" time="2017-03-24T11:02:12.614045610Z" level=error msg="failed to close stdin: rpc error: code = 2 desc = containerd: process not found for container" time="2017-03-24T23:24:27.453178300Z" level=info msg="Processing signal 'terminated'" time="2017-03-24T23:24:28.136177486Z" level=info msg="stopping containerd after receiving terminated" \n2017年 3月 27日 月曜日 02:09:35 UTC\n time="2017-03-27T02:09:35.874130943Z" level=info msg="libcontainerd: new containerd process, pid: 2610" time="2017-03-27T02:09:37.019615575Z" level=warning msg="devmapper: Usage of loopback devices is strongly discouraged for production use. Please use `--storage-opt dm.thinpooldev` or use `man docker` to refer to dm.thinpooldev section." time="2017-03-27T02:09:37.031127386Z" level=warning msg="devmapper: Base device already exists and has filesystem xfs on it. User specified filesystem will be ignored." time="2017-03-27T02:09:37.038844834Z" level=info msg="[graphdriver] using prior storage driver \"devicemapper\"" time="2017-03-27T02:09:37.331504417Z" level=info msg="Graph migration to content-addressability took 0.00 seconds" time="2017-03-27T02:09:37.331648393Z" level=warning msg="Your kernel does not support cgroup blkio weight" time="2017-03-27T02:09:37.331662973Z" level=warning msg="Your kernel does not support cgroup blkio weight_device" time="2017-03-27T02:09:37.331724265Z" level=warning msg="mountpoint for pids not found" time="2017-03-27T02:09:37.332471803Z" level=info msg="Loading containers: start." ......time="2017-03-27T02:09:37.407747301Z" level=info msg="Firewalld running: false" time="2017-03-27T02:09:37.622272454Z" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a preferred IP address" time="2017-03-27T02:09:37.655519910Z" level=info msg="Loading containers: done." time="2017-03-27T02:09:37.656020316Z" level=info msg="Daemon has completed initialization" time="2017-03-27T02:09:37.656038467Z" level=info msg="Docker daemon" commit="7392c3b/1.12.6" graphdriver=devicemapper version=1.12.6 time="2017-03-27T02:09:37.662848540Z" level=info msg="API listen on /var/run/docker.sock" time="2017-03-30T02:20:15.941151713Z" level=error msg="failed to close stdin: rpc error: code = 2 desc = containerd: process not found for container" time="2017-03-30T02:20:34.224552581Z" level=error msg="failed to close stdin: rpc error: code = 2 desc = containerd: process not found for container" time="2017-03-31T02:39:52.784894695Z" level=error msg="failed to close stdin: rpc error: code = 2 desc = containerd: process not found for container" \n2017年 4月 1日 土曜日 03:32:01 UTC\n time="2017-04-01T03:32:01.982951860Z" level=info msg="libcontainerd: new containerd process, pid: 2751" time="2017-04-01T03:32:02.12522996Z" level=fatal msg="open /var/run/docker/libcontainerd/containerd/319a873d69e28c25abfc544f231244746c1bc91f45f6bc0a48bbd128dc02a503/state.json: no such file or directory" time="2017-04-01T03:32:08.007545887Z" level=info msg="libcontainerd: new containerd process, pid: 2812" time="2017-04-01T03:32:08.014041879Z" level=fatal msg="open /var/run/docker/libcontainerd/containerd/319a873d69e28c25abfc544f231244746c1bc91f45f6bc0a48bbd128dc02a503/state.json: no such file or directory" (省略) \n2017年 4月 1日 土曜日 22:34:44 UTC\n time="2017-04-01T22:34:44.540145627Z" level=info msg="libcontainerd: new containerd process, pid: 16598" time="2017-04-01T22:34:44.593492918Z" level=fatal msg="open /var/run/docker/libcontainerd/containerd/319a873d69e28c25abfc544f231244746c1bc91f45f6bc0a48bbd128dc02a503/state.json: no such file or directory" time="2017-04-01T22:34:50.560634847Z" level=info msg="libcontainerd: new containerd process, pid: 21735" time="2017-04-01T22:34:50.573067625Z" level=fatal msg="open /var/run/docker/libcontainerd/containerd/319a873d69e28c25abfc544f231244746c1bc91f45f6bc0a48bbd128dc02a503/state.json: no such file or directory" $
最後のエラーメッセージにありますように、/var/run/docker/libcontainerd/containerd/{container id} 以下にstate.jsonは確かに存在していませんでした。
行った対処
思い切って、/var/run/docker/libcontainerd/containerd/{container id} をディレクトリごと削除しました。
$ rm -rf /var/run/docker/libcontainerd/containerd/{container id}
上記ディレクトリを削除後、Dockerのサービスを再起動しました。
$ service docker restart docker を停止中: [ OK ] Starting docker: . [ OK ] $
Dockerコマンドを打つと、正常に応答するようになりました。
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE postgres latest 4023a747a01a 10 weeks ago 264.8 MB php 5.6-apache 500c82490ae6 3 months ago 370.8 MB (省略) $
以上になります。長くなりまして恐縮です。なぜDockerコマンドが応答無しになっていたのか、対処方法は正しかったのか、等、教えていただけると助かります。
よろしくお願いいたします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/04 09:16