環境
- Docker:Docker version 25.0.3, build 4debf41
- Dockerホスト:NAME=”Ubuntu” VERSION_ID=”22.04″
- Dockerコンテナ:Rocky Linux9.3
- docker-compose を使用
事象
Dockerコンテナでsystemdコマンドを実行しようとしたら以下のMSGが出力され、実行できない。
ERROR: for server-hogehoge Cannot start service db: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "/sbin/init": stat /sbin/init: no such file or directory: unknown
ERROR: for db Cannot start service db: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "/sbin/init" : stat /sbin/init: no such file or directory: unknown ERROR: Encountered errors while bringing up the project.
原因
Dockerコンテナに、/sbin/initが存在しない。
対処
docker-compose.ymlの該当サービス内(今回の例でいくと、server-hogehoge)に、以下2つの記述を追記する。
privileged: true
command: /sbin/init
↓
dockerコンテナを再起動してみる(downまで実行)
(downはコンテナを指定して実行)
docker-compose rm -fsv server-hogehoge && docker-compose up -d
↓
怒られる。
まだ/sbin/initが存在していない模様。
↓
現在のコンテナの状態からdockerのイメージを作成し、
docker-compose.yml のimage: にてその作成したイメージを指定。
privileged: true
command: /sbin/init
の記述は記述されたままの状態で、
再度 dockerコンテナを再起動してみる(downまで実行)
(downはコンテナを指定して実行)
docker-compose rm -fsv server-hogehoge && docker-compose up -d
起動できた。
なぜこれで起動できたのか、追えていないが、今回はそこは不要なので追わない。
今後同じことが起きたら同じ手順を踏んでみることにする。
つまり、
- docker commit
- privileged true を指定 + /sbin/init を指定
- docker-composeでdownまでやる再起動
コメント