安装CentOS,并安装Docker,直到能够通过SSH连接
在构建Docker时的步骤备忘录。
2015/02/17修正
修改docker run命令时的执行命令为/sbin/init,
但是出现了大量残留的sshd僵尸进程,导致超过可执行进程数无法执行命令的情况发生。
因此,使用monit进行修正,以启动sshd。
想做的事情 zuò de
在CentOS上安装Docker。
创建一个可以从外部进行SSH连接的容器。
操作步骤
Docker的安装
由于安装的服务器是CentOS6.3,而docker仅支持CentOS6.5以上版本,因此进行了更新以便安装。
# yum update
# yum install docker-io
# service docker status
# service docker start
获取Docker镜像
1. 使用 docker pull {镜像名称}:{标签} 命令来获取镜像。
默认情况下,将从 Docker Hub Registry 获取镜像。
2. 可以查看已获取到的镜像列表。
# docker pull centos:centos6
# docker images
启动容器
# docker run -t -i -d --name hoge centos:centos6 /bin/bash
Docker运行命令参数说明
-t ・・・ttyを確保。/bin/bashなどでコンテナを操作する際に指定。
-i ・・・コンテナの標準入力を開く。/bin/bashなどでコンテナーを操作する際に指定
-d ・・・バックグラウンドで実行。WebやAPサーバなど常時実行するコンテナーで指定
--name・・・{コンテナ名}
{イメージ名}:{タグ名}
コンテナで実行するコマンド
连接到容器
1. 从容器列表中确认容器ID。
2. 连接到容器。
# docker ps
# docker attach [コンテナID]
安装sshd
1. 在容器中安装SSH。
2. 备份sshd_config并配置PAM。
3. 启动sshd服务。
# yum install openssh
# yum install openssh-server
#
# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.orig
#
# sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config
# sed -ri 's/#UsePAM no/UsePAM no/g' /etc/ssh/sshd_config
#
# /etc/init.d/sshd start
安装monit
1. 安装 Monit。
2. 确认安装。
3. 添加对 sshd 的监视设置。
4. 重新启动 Monit 服务。
# yum install monit
#
# service monit --version
service ver. 0.91
#
# vi /etc/monit.d/sshd
check process sshd
with pidfile "/var/run/sshd.pid"
start program "/etc/init.d/sshd start"
stop program "/etc/init.d/sshd stop"
if failed port 22 protocol ssh then restart
if 5 restart within 5 cycles then alert
#
# /etc/init.d/monit restart
Shutting down monit:
Starting monit:
#
# exit
容器镜像的提交
1. 从容器列表中获取容器ID。
2. 提交(本次使用名为centos6_ssh的)容器。
3. 确认Docker镜像的创建。
4. 停止已创建的容器。
5. 删除已创建的容器。
# docker ps -a
# docker commit コンテナID centos6_ssh
# docker images
# docker stop コンテナID
# docker rm コンテナID
启动容器
将服务器的50022端口映射到容器的22端口,并启动容器。
# docker run -t -i -d -p 50022:22 --name centos6_ssh centos6_ssh /bin/bash
# ssh root@localhost -p 50022
在安装Monit之前,以下是执行命令时使用了/sbin/init。
由于出现大量残留的sshd僵尸进程事件,因此通过Monit修改以通过其启动sshd。
这可能是原因吗?
http://blog.phusion.nl/2015/01/20/docker-and-the-pid-1-zombie-reaping-problem/
# docker run -t -i -d -p 50022:22 --name centos6_ssh centos6_ssh /sbin/init
# ssh root@localhost -p 50022