Opensourcetechブログ

OpensourcetechによるNGINX/Zabbix/Neo4j/Linuxなどオープンソース技術に関するブログです。

DockerコンテナのCentOS7でsystemctlコマンドを使う方法

こんにちは、LinuCエバンジェリストこと、鯨井貴博@opensourcetechです。

 

今回は、DockerコンテナのCentOS7イメージで、systemctlコマンドを実施する方法です。

 

使用するコンテナイメージは、以下のもの(centos:latest)です。

f:id:opensourcetech:20190222162911p:plain

https://hub.docker.com/_/centos

 

 

とりあえず、普通に使ってみます。

※Docker環境はある前提ですので、ないかたはこちらなどを参考に用意してください。

XYZ:~ Yoshiki$ docker pull centos
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.

 

 

 

 

 

www.slideshare.net

github.com

www.facebook.com

twitter.com

www.instagram.com

 

 

にほんブログ村 IT技術ブログ Linuxへ
Linux

にほんブログ村 IT技術ブログ オープンソースへ
オープンソース

 

 

Opensourcetech by Takahiro Kujirai