dockerコンテナで systemctlコマンドを実行したい

dockerコンテナでCentos7の環境作って

例えばこんなコマンド

docker run -t -i -d --name test centos:centos7 /bin/bash

systemclt start mysqld.servise
などのような、「systemclt」を実行しようとすると
「Failed to get D-Bus connection: Operation not permitted」
みたいなメッセージで怒られる。
パーミッションがないのか??

調べてみたところ「–privileged」オプションをつけて
コンテナを立ち上げたあとに docker exec で入れば実行できるらしいのだけど
僕の環境だと、下記コマンド実行するとloginを求められて、
よくわからないことになった。。。

docker run --privileged --name test -d centos:centos7 /sbin/init

なので、SELinuxを無効にする方法を試してみたら
うまくいったので、今回はこちらを採用したよ

SELinux の状態確認

# getenforce

enforcing ・・・ 有効、アクセス制限あり
permissive ・・・ 有効、アクセス制限なし
disabled ・・・ 無効

無効にするには
/etc/selinux/config
上記ファイルの
SELINUX=enforcing

SELINUX=disabled
に変更

無効にした後に、下記コマンドを実行したら解決したよー

docker run --cap-add=SYS_ADMIN --name test -d centos:centos7 /sbin/init
docker exec -it test /bin/bash

コメント

タイトルとURLをコピーしました