安装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
广告
将在 10 秒后关闭
bannerAds