Docker CentOS7イメージはなぜかデフォルトでsystemctlが使えません。
なんかしらserviceを動かそうとすると以下のようなエラーが出るはずです。。(今回はsshd.service)
1 2 |
[root@0ece4f490104 /]# systemctl start sshd Failed to get D-Bus connection: Operation not permitted |
ちなみにイメージは最新のCentOS Linux release 7.2.1511 (Core)を使っています。
どうやらイメージ内に/sbin/initがないので起動しないみたい。
コンテナの概念としてコンテナはサーバではないので、
デーモンを動かしたりすることは基本的に想定されていない。
なので、systemdのようなデーモン管理ツールは入っていないという理由から。
■コンテナ起動(CentOS7イメージ)とログイン
1 |
$ docker run --privileged -d --name adachin-test01 centos:7 /sbin/init |
1 |
$ docker exec -it adachin-test01 /bin/bash |
■サービス起動(sshd)
1 2 |
[root@7bb0a2aaabc8 /]# systemctl start sshd [root@7bb0a2aaabc8 /]# |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[root@7bb0a2aaabc8 /]# systemctl status sshd ● sshd.service - OpenSSH server daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2016-09-04 00:52:00 UTC; 7s ago Docs: man:sshd(8) man:sshd_config(5) Main PID: 1832 (sshd) CGroup: /system.slice/sshd.service └─1832 /usr/sbin/sshd -D Sep 04 00:52:00 7bb0a2aaabc8 systemd[1]: Started OpenSSH server daemon. Sep 04 00:52:00 7bb0a2aaabc8 systemd[1]: Starting OpenSSH server daemon... Sep 04 00:52:00 7bb0a2aaabc8 sshd[1832]: Server listening on 0.0.0.0 port 22. Sep 04 00:52:00 7bb0a2aaabc8 sshd[1832]: Server listening on :: port 22. |
動いたぞおおお!!!
ちなみにdockerホストからもsshでログインできた。
1 2 3 |
docker@docker01:~$ ssh 172.17.0.10 Last login: Sun Sep 4 01:21:05 2016 [docker@7bb0a2aaabc8 ~]$ |
■ansible playbookの場合
1 2 3 4 5 6 7 |
--- - hosts: docker01 become: yes remote_user: docker tasks: - name: deploy centos container docker: image=centos:7 name=adachin-test01 privileged=yes ports=xxxx:xxxx expose=80 tty=yes command=/sbin/init |
こんな感じにすればansibleでdockerコンテナをプロビジョニングする場合も問題なくsystemctlは使える。
■まとめ
6系だとservice系問題ないけど7系の場合はどうしたw
もちろんUbuntuも同じですぜ!
参考:
http://qiita.com/yunano/items/9637ee21a71eba197345
0件のコメント