systemctlするとFailed to get D-Bus connection: Operation not permittedがでる

dockerコンテナ内でsystemctl status httpdしたところ以下のエラーが発生した

[root]# systemctl status httpd
Failed to get D-Bus connection: Operation not permitted


そこでいくつかググッてみました。

DockerでCentOS7起動時にsystemctlが動かないとき

Failed to get D-Bus connection: Operation not permitted

どの記事にも共通するのはdocker run時に--privilegedをつける、最後の引数に/sbin/initをつける、ということ。

そこで、コンテナ起動時にオプションをつけますが、なんどやっても解決せず。。

sudo docker run -d --privileged -u $UID --rm --name t1 --hostname t1 centos-test:t1 /sbin/init


試行錯誤してみた結果、原因は-u $UIDとユーザ指定して起動していたためでした。 コンテナ起動時は指定したuserでloginし、su -でrootにloginし直して、systemctlしていましたが、これがよくなかったようです。

-u $UIDを外して、コンテナに最初からrootでloginしsystemctlしたところエラーはなくなりました。

sudo docker run -d --privileged --rm --name t1 --hostname t1 centos-test:t1 /sbin/init