- CentOS6.5(Guest) に monit, sshd をインストールする
core@localhost ~ $ docker run -i -t -h centos centos:centos6 /bin/bash
bash-4.1# yum -y install wget
bash-4.1# wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
bash-4.1# rpm -ivh rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
bash-4.1# yum -y update
bash-4.1# yum -y install passwd openssh openssh-server openssh-clients sudo monit
bash-4.1# ls /etc/init.d/
functions halt htcacheclean httpd iptables killall monit netconsole netfs network rdisc restorecond sandbox single sshd udev-post
- monit は、RPM Forge で公開されている
- SSHでログインするユーザの登録
bash-4.1# useradd docker
bash-4.1# passwd -f -u docker
bash-4.1# echo docker | passwd docker --stdin
bash-4.1# usermod -G wheel docker
bash-4.1# id docker
uid=500(docker) gid=500(docker) groups=500(docker),10(wheel)
- 公開鍵を仕込むのは、docker Dockerfile? でやる
- wheel グループのユーザが sudo を使えるようにする
bash-4.1# visudo
で、 "#%wheel ALL=(ALL) ALL" のコメントアウトを外す
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
- monit の Web UI をどこからでも使えるようにする (今回はお試しなので)
/etc/monit.conf
set httpd port 2812 and
use address 0.0.0.0 # accept connection from any machine
allow admin:monit # require user 'admin' with password 'monit'
allow @monit # allow users of group 'monit' to connect (rw)
allow @users readonly # allow users of group 'users' to connect readonly
- monit で sshd を監視する
/etc/monit.d/ssh.conf
check process sshd with pidfile /var/run/sshd.pid
start program = "/etc/init.d/sshd start"
stop program = "/etc/init.d/sshd stop"
- monit は、sshd が動いていなかったら起動する ⇒ Docker の初期プロセスとして monit を起動すると、monit が sshd を起動する
- pid ファイルは /etc/init.d/sshd のコメントを見よ
- Image を commit する
bash-4.1# exit
exit
core@localhost ~ $ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a62db2affdf6 centos:centos6 /bin/bash 5 minutes ago Exited (0) About a minute ago compassionate_archimedes
core@localhost ~ $ docker commit a62db2affdf6 cent6_monit
- 仮想 CeontOS6 上で monit を foreground プロセスとして起動する
core@localhost ~ $ docker run -p 10022:22 -p 12812:2812 -d cent6_monit /usr/bin/monit -I
a71eb99999161963e82f4c579cdd5fc5f8c3819f5cad01bcf8df3628e107236e
core@localhost ~ $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a71eb9999916 cent6_monit:latest /usr/bin/monit -I 38 minutes ago Up 30 minutes 0.0.0.0:10022->22/tcp, 0.0.0.0:12812->2812/tcp angry_archimedes
monit は "-I" オプションを付けて foreground で動かす