38
39

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CentOS7のDockerコンテナでsystemctlを使えるようにする

Posted at

Failed to get D-Bus connection: Operation not permitted が出た場合の対処法まとめ

色々な場所で色々な対処法が書かれていますが、結論として以下の2つが必要です。

  • privilegedを有効(true)にする
  • /sbin/initで起動実行する

片方だけ指定して、うまくいかないな〜とかなっていませんか?(僕です)

privileged を有効(true)にする

privileged は、特権モードという意味です。これがデーモンを操作するのに必要な権限になりますが、デフォルトでこれがOFFになっているため起動できていないという事になります。

/sbin/initで起動実行する

起動時にサービスを開始し、ランレベルを設定してくれます。これでprivilegedが有効になった状態で読み込みしてくれるようになります。

docker runの場合

起動時のコマンドに以下を追加する

  • --privileged
  • /sbin/init
# 例)
docker run -d --privileged --name hoge centos /sbin/init
docker exec -it hoge /bin/bash

/sbin/init で特権モードで起動させてから接続するようにします。

(参考) CentOS7のコンテナでsystemctlを使うための方法
(参考) DockerでCentOS7起動時にsystemctlが動かないとき

docker-composeの場合

こちらも書く場所が違うだけで、やることは同じです。

  • privileged: true
  • command: /sbin/init
docker-compose.yml
services:                                      
  app:                                         
    build:                                     
      context: ./                              
    privileged: true                           
    command: /sbin/init                        
docker-compose up -d
docker-compose exec app /bin/bash

(参考) docker-compose(CentOS7系やMySQLのオプションなど)

38
39
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
38
39

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?