もふもふ技術部

EC2 + CentOS6 + Docker でSSHとApacheを動かす


一つのEC2インスタンス上にDockerを入れて複数のアプリケーションを稼働させようとしたんだけど、ちょっと手間取ってそこまで辿り着けなかった。

ひとまずSSH接続可能+Apacheが動いてるDockerコンテナを作った。

このあたりを参考にさせていただきました。
http://memocra.blogspot.jp/2014/02/dockersupervisor.html

EC2インスタンスは既にあってSSH接続出来る前提で。
ホストOSはAmazon Linux、ゲストOSはCentOS6です。

DockerでSSHとApacheを設定

dockerをインストールしてCentOS6をpullしようとすると失敗。

インストール後にrebootが必要らしいです。

再挑戦。ゲストOSが起動してシェルに入れました。

ゲストOSの設定をして行きます。sshdのインストールと、rootユーザーのパスワードを変更。

sshの設定を変更。外部からは見えないのでひとまずRootLoginを許可しちゃいます。

sshdを起動して、一旦ゲストOSを終了する。

ここまで変更したイメージをコミットしておく。再びコンテナを起動したときに同じ状態で起動するため。

では設定を施したイメージをバックグランドで起動します。
-p 22は22番ポートをホストOSとマッピングする指定。

49154番がゲストOSの22番にフォワードされることがわかる。

ゲストOSに割り当てられたIPを調べる。
docker0インタフェースを見ると、172.17.42.1であることがわかる。

ssh接続を試してみる。ログイン出来た!

さらにゲストOSにApacheを入れてみよう。

再びイメージの変更をコミットしておく。

ローカルマシンからDockerコンテナで起動されたApacheに接続するために、一旦killして、ポートフォワードを指定して起動する。

AWSのSecurity Groupの設定で10080ポートを許可して、アクセスしてみる。

http://your-ip-address:10080/

Apacheの初期画面が表示されました!成功!!

TODO

今回はポート10080でムリやりやりましたが、80番 or 443番かで別々のドメインからきたアクセスを、nginxプロキシで振り分けて、Dockerコンテナ上のアプリケーションに転送したいと思ってます。

この辺りが参考になりそう。
http://memocra.blogspot.jp/2014/02/dockerdockernginxweb.html

The following two tabs change content below.
原田 敦

原田 敦

日本CAWのエンジニア。もふもふ部の部長。得意分野はRuby on Railsを使った小規模WEBアプリケーションを高速で開発すること。週末の楽しみは一人お菓子パーティー。三度の飯より小動物をもふもふするのが好きです。
Tagged on: ,