CentOS7 で、SSH可能な Docker イメージを作る機会があったので、その時のメモ。また、Docker Hub のアカウントを持っていたが使っていなかったので、ついでに使ってみた。
動作環境
- Mac OSX (El Capitan)
- Docker for Mac (1.12.0)
Docker イメージを作成
Docker イメージを作成する際、CentOS6 の時に使っていた Dockerfile があったので流用した。
が、ssh で ログインしようすると、system is booting up. see pam_nologin(8)
となり、pam_nologin の部分でエラーが発生してログインできなかった。
そこで、ローカルでしか動かす予定がなかったので、とりあえず以下のファイル
* /etc/pam.d/login
* /etc/pam.d/sshd
の 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