こんにちは、LinuCエバンジェリストこと、鯨井貴博@opensourcetechです。
今回は、DockerコンテナのCentOS7イメージで、systemctlコマンドを実施する方法です。
使用するコンテナイメージは、以下のもの(centos:latest)です。
https://hub.docker.com/_/centos
とりあえず、普通に使ってみます。
※Docker環境はある前提ですので、ないかたはこちらなどを参考に用意してください。
Using default tag: latest
latest: Pulling from library/centos
a02a4930cb5d: Pull complete
Digest: sha256:184e5f35598e333bfa7de10d8fb1cebb5ee4df5bc0f970bf2b1e7c7345136426
Status: Downloaded newer image for centos:latest
XYZ:~ Yoshiki$ docker images | grep centos
centos latest 1e1148e4cc2c 2 months ago 202MB
XYZ:~ Yoshiki$ docker run -it --name centos7-syslogd -p 514:514/tcp -p 514:514/udp centos
[root@1759357a9b26 /]#
[root@1759357a9b26 /]#
[root@1759357a9b26 /]# cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core)
[root@1759357a9b26 /]# yum install rsyslog
.
.
省略
.
.
[root@1759357a9b26 /]# systemctl start rsyslog
Failed to get D-Bus connection: Operation not permitted <----権限がねぇよって言われた
コンテナイメージを取得し(docker pull)、コンテナ作成・操作(docker run)でrsyslogをインストールしsystemctlで起動します。
しかし、「Failed to get D-Bus connection: Operation not permitted(権限がねぇよ)」と言われ起動できません。
原因
コンテナイメージでは、systemctl(systemd)が無効になっています。
※以下に書かれています。
https://hub.docker.com/_/centos?tab=description
対応方法
1.以下にあるようにDockerfileを使い、有効化する。
https://hub.docker.com/_/centos?tab=description
2.「--pribileged」オプションをつけてコンテナを作成・起動する。
以下、参考リンク。
Docker run リファレンス — Docker-docs-ja 1.12.RC2 ドキュメント
XYZ:~ Yoshiki$ docker run --privileged -it --name centos7-syslogd -p 514:514/tcp -p 514:514/udp centos
[root@278b382c1c56 /]# yum install rsyslog
.
.
省略
.
.
[root@28056e335b8b /]# systemctl status rsyslog
● rsyslog.service - System Logging Service
Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:rsyslogd(8)
http://www.rsyslog.com/doc/
[root@28056e335b8b /]# systemctl start rsyslog
[root@28056e335b8b /]# systemctl status rsyslog
● rsyslog.service - System Logging Service
Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2019-02-17 01:22:22 UTC; 2s ago
Docs: man:rsyslogd(8)
http://www.rsyslog.com/doc/
Main PID: 1406 (rsyslogd)
CGroup: /docker/28056e335b8bdb6358b3c0b83fe3fde653913a167e607a91efe5c32863a35a83/system.slice/rsyslog.service
└─1406 /usr/sbin/rsyslogd -n
‣ 1406 /usr/sbin/rsyslogd -n
Sun 17 01:22:22 28056e335b8b systemd[1]: Starting System Logging Service...
Sun 17 01:22:22 28056e335b8b rsyslogd[1406]: [origin software="rsyslogd" sw...t
Sun 17 01:22:22 28056e335b8b systemd[1]: Started System Logging Service.
Hint: Some lines were ellipsized, use -l to show in full.