ようへいの日々精進XP

よかろうもん

docker のコンテナイメージに ssh でアクセスしてみる

はじめに

  • 引き続き、オリジナルの Debian コンテナイメージを扱う
  • ホストからコンテナイメージに ssh でアクセスしてみる
  • ドキュメントを上からなぞるだけで出来たけどメモ

参考

手順

最終的には以下のようなイメージの構成となる。

f:id:inokara:20130929094548p:plain

コンテナイメージの作成

引き続き、こちらのイメージを使う。

起動

docker run -i -t inokappa/squeeze /bin/bash

sshd の設定と root パスワードの設定

起動したコンテナにて以下のように openssh-server をインストールしたりする。

apt-get install openssh-server
mkdir /var/run/sshd
/usr/sbin/sshd
passwd root
exit

/var/run 以下にディレクトリを作成したりしなければならなかったり、そもそも init.d から起動出来ないので注意する。

コミット

sshd の設定と root パスワードの設定を行ったら一旦、コンテナイメージから exit して、コンテナイメージの ID を確認する。

docker ps -a

コミットする。

docker commit ${ID} inokappa/squeeze-sshd

sshd のコンテナイメージを起動

コミットしたイメージで sshd を起動する。

docker run  -d -p 22 inokappa/squeeze-ssh /usr/sbin/sshd -D

-dDetached mode でバックグラウンドで起動させるオプション。また、-pExpose a container's port to the host (use 'docker port' to see the actual mapping) とあるので、コンテナで晒すポート番号を指定する。

ポート番号を確認

コンテナで晒しているポート番号がホスト側で何番のポートにマッピングされるポート番号を確認する。

docker port ${ID} 22

出力されたポート番号を控えておく。このポートがコンテナイメージの 22 番ポートにフォワードされる。 尚、ポート番号は 49153 番以上が利用される。

アクセスしてみる

ホスト側で docker0 のインターフェースに設定された IP を確認し、以下のようにアクセスする。

ssh root@xxx.xxx.xxx.xxx -p 49153

実際にやってみて

  • 構えていたよりは簡単に出来たけど、若干、面倒
  • 細々とコミットすることでオペミスっても簡単に戻すことが出来るのは嬉しい