mzumi's blog

SSH 可能な Docker イメージの作成

October 04, 2016

CentOS7 で、SSH可能な Docker イメージを作る機会があったので、その時のメモ。また、Docker Hub のアカウントを持っていたが使っていなかったので、ついでに使ってみた。

動作環境

Docker イメージを作成

Docker イメージを作成する際、CentOS6 の時に使っていた Dockerfile があったので流用した。
が、ssh で ログインしようすると、system is booting up. see pam_nologin(8) となり、pam_nologin の部分でエラーが発生してログインできなかった。
そこで、ローカルでしか動かす予定がなかったので、とりあえず以下のファイル

account required pam_nologin.so 部分をコメントアウトした。

また、公開鍵を登録して、パスワードなしで、ログインしたいのだが、流石に公開するものなので、公開鍵は含めず、docker run する際に公開鍵を指定するようにした。(セキュリティの問題ではなく、各々の公開鍵を設定したいよねということで。)

GitHub と Docker Hub の連携

GitHub に作成した Dockerfile などを公開したら、Docker Hub で Create Automated Build を選択し、ビルド対象 GitHub のリポジトリを選択する。
その後、Docker Hub の対象リポジトリで Build Settings のタブの中の Trigger ボタンを押したら、ビルドが
始まった。次回からは、GitHub 側でソースに変更があったら自動でイメージが作成されると思う。

これで、Docker イメージが作成できたので、以下のコマンドで作成した Docker イメージを取得できる。

$ docker pull mzumi/centos7-ssh

取得後、下記のコマンドを入力すると、コンテナにログインできる。

$ docker run -d -p 2222:22 -e PUB_KEY="$(cat ~/.ssh/id_rsa.pub)" mzumi/centos7-ssh
$ ssh docker@localhost -p 2222