CLOVER🍀

That was when it all began.

Docker内でsystemdを使いたい

Docker内でsystemdを使おうとすると、以下のエラーに遭遇して動作しません。

Failed to get D-Bus connection: No connection to service manager.

にっちもさっちもいかなくなるので、こちらを参考に。

Dockerでsystemctlでserviceが起動できない - SHOYAN BLOG

「--privileged」を付けて、かつ起動コマンド「/sbin/init」でDockerコンテナを起動すればよいみたいです。

参考にしたエントリでは「-d」としていますが、自分の場合は使い捨てのコンテナ利用が多いので、
次のようにしました。

$ docker run -it --rm --privileged ubuntu:latest /sbin/init

使用したコンテナは、「ubuntu:latest」です。

あとは、この状態のコンテナにexecで入ります。

$ docker exec -it [コンテナ名] bash

とりあえず、これでsystemdが使えるようになりますよ、と。

$ sudo systemctl start xyz.service

$ sudo systemctl stop xyz.service