LoginSignup
38
39

More than 5 years have passed since last update.

CentOSにdockerをインストールして、ssh接続できるようにするまで

Last updated at Posted at 2015-01-12

docker構築時の手順メモ。

■2015/02/17修正
docker run時の実行コマンドに/sbin/initを指定していたが、
sshdのゾンビプロセスが大量に残り、実行可能プロセス数を超えてコマンド実行が出来なくなる事象が発生。
そのため、monitを用いてsshdを起動するように修正。

やりたいこと

・CentOSにdockerをインストール
・外部からSSH接続できるようなコンテナを作成する

手順

dockerのインストール

インストール先のサーバはCentOS6.3、dockerはCentOS6.5以上がサポートだったので、アップデートしてインストール。

# yum update
# yum install docker-io
# service docker status
# service docker start

docker imageの取得

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 runコマンド引数説明

 -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 imageの作成確認
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
38
39
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
38
39