Help us understand the problem. What is going on with this article?

oci runtime errorでdockerが起動しなくなった件

More than 1 year has passed since last update.

AWS EC2上で起動させていたコンテナがリソース不足で応答不能になったので、
EC2停止 -> スケールアップ -> EC2起動
したら、コンテナが起動しなくなってしまった。

$ docker-compose ps
        Name                      Command                State     Ports
------------------------------------------------------------------------
ec2user_gitlab_1       /sbin/entrypoint.sh app:start    Exit 255
ec2user_postgresql_1   /sbin/entrypoint.sh              Exit 255
ec2user_redis_1        /sbin/entrypoint.sh --logl ...   Exit 255


$ docker-compose up -d
Starting ec2user_postgresql_1 ...
Starting ec2user_redis_1 ...
Starting ec2user_postgresql_1
Starting ec2user_postgresql_1 ... error

ERROR: for ec2user_postgresql_1  Cannot start service postgresql: oci runtime error: container with id exists: 6b69a34b1f5b140bc5b8Starting ec2user_redis_1 ... error

ERROR: for ec2user_redis_1  Cannot start service redis: oci runtime error: container with id exists: fdef8901e8a94418b4cca0fb3eaa7851128cff85eda0e622e7ed9fd013707516

ERROR: for redis  Cannot start service redis: oci runtime error: container with id exists: fdef8901e8a94418b4cca0fb3eaa7851128cff85eda0e622e7ed9fd013707516

ERROR: for postgresql  Cannot start service postgresql: oci runtime error: container with id exists: 6b69a34b1f5b140bc5b889644d117d53fd1840d96879d80ffbdc6284f7ec0305
ERROR: Encountered errors while bringing up the project.

$ docker logs <container id>
   :
   :
container with id exists: <container id>

dockerやEC2を再起動しても解決しなかったが、以下の手順で復活できました。

$ sudo su -
# cd /run/runc/
# ls 
<container id1> <container id2> <container id3>
# rm -fr *

$ docker-compose up -d
Starting ec2user_postgresql_1 ...
Starting ec2user_redis_1 ...
Starting ec2user_postgresql_1
Starting ec2user_redis_1 ... done
Starting ec2user_gitlab_1 ...
Starting ec2user_gitlab_1 ... done

$ docker-compose ps
        Name                      Command               State                           Ports
---------------------------------------------------------------------------------------------------------------------
ec2user_gitlab_1       /sbin/entrypoint.sh app:start    Up      0.0.0.0:10022->22/tcp, 443/tcp, 0.0.0.0:10080->80/tcp
ec2user_postgresql_1   /sbin/entrypoint.sh              Up      5432/tcp
ec2user_redis_1        /sbin/entrypoint.sh --logl ...   Up      6379/tcp

めでたしめでたし。

今まで何度も同じEC2インスタンスを停止->再開していても問題はありませんでした。
今回のような問題に遭遇したのは初めてでしたが、EC2の停止にだいぶ時間がかかっており、少し怪しい気配は感じていました。

削除した /run/runc/<container id>/ には state.json というファイルが存在していて、サイズは25Kほどありcontainerの状態を保持しているようでした。
コンテナを停止するとディレクトリごと消える為、サーバが異常終了し、このファイルが残ってしまった事が原因のようでした。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away