概要
AWSの無料枠、EC2だと一番小さなt2.microだけど、いろいろと試すことが可能です。たとえば、docker-machine経由でDockerホスト化して、様々なDockerコンテナを試してみるとか。
ここでは、AWSの無料枠にDockerホストを立ち上げて、DockerコンテナとしてGlassFishを立ち上げてみます。
以下の、3, 4, 5はオプションです。デフォルトが定義されているはずなので、それが使えます。
手順
- AWSのアカウントを取得する
- リージョンを決める
- Virtual Private Cloud を作成する(オプション)
- インターネットゲートウェイを作って、VPCにアタッチする(オプション)
- ルートテーブルを修正してインターネットゲートウェイを追加する(オプション)
- サブネットを作成する(オプション)
- セキュリティブループを作りインバウンドルールを設定する
- docker-machineでcentos with dockerのインスタンスを生成する
- GlassFishをDockerコンテナとして導入する
- 楽しんで! have fun!
1. AWSのアカウントを取得する
クレジットカードを登録するだけです。無料枠を超えたときのためです。AWSコンソールはとってもカスタマー思いなので安心してください。無料枠を超えるようなEC2インスタンスを作ろうとすると、枠超えちゃうけど大丈夫かい?、と聞いてくれます。素晴らしい。
今はなんとクリスマスセール?で$25分もらえちゃいます。いいなぁ。
2. リージョンを決める
無料枠で東京リージョンを使えます。早いです。
でも、ここでは、諸事情により様々なリージョンを使います。
注意すべき点は都度説明します。
3. Virtual Private Cloud を作成する(オプション)
デフォルトのVirtual Private Coludを使わない場合に実施してください。これは、仮想のプライベートなクラウド、です。バプリックなクラウド上に、プライベート空間を作成するってことです。
AWSコンソールから、サービス→__VPC__と選択します。するとこんな画面が出ます。
ウィザードでなく、__VPCの作成__メニューからやってみましょう。
CIDRが、10.0.0.0/16です。
作るとこんな感じになります。
4. インターネットゲートウェイを作って、VPCにアタッチする(オプション)
VPCを作成した場合は必要に応じて__インターネットゲートウェイ__を作ります。インターネットアクセスを可能にするためのゲートウェイを作るということです。
作れたら、それを選択して先ほど作成したVPCにアタッチします。
5. ルートテーブルを修正してインターネットゲートウェイを追加する(オプション)
インターネットゲートウェイを作成した場合は__ルートテーブル__に追加してやります。インターネットゲートウェイを作っただけでルートテーブルに追加していない場合は、当然ながらインターネットにアクセスできないVPCになっちゃいます。
やり方は、対象のVPCを選択して、ルートテーブルのリンクをクリックします。
6. サブネットを作成する(オプション)
VPCを作成した場合はサブネットも作成します。
アベイラビリティゾーン違いで複数作るのが基本です。ここでは__us-west-2a__で作ってます。
7. セキュリティブループを作りインバウンドルールを設定する
EC2のコンソールを使います。docker-machineを使う場合は、__2376__ポートの開放が必要です。
8. docker-machineでcentos with dockerのインスタンスを生成する
docker-machine
を使います。次のようなスクリプトを実行します。環境に合わせて調整しましょう。
この設定例は、バージニア(us-east-1)向けの設定です。
リージョンの英名?はこちら。AWS リージョンを選択する
docker-machine --debug create \
--driver amazonec2 \
--amazonec2-access-key ***** \
--amazonec2-secret-key ***** \
--amazonec2-region us-east-1 \
--amazonec2-ami ami-b57a3ddf \
--amazonec2-ssh-user ec2-user \
--amazonec2-instance-type t2.micro \
--amazonec2-root-size 30 \
--amazonec2-security-group sample \
--amazonec2-vpc-id ***** \
--amazonec2-subnet-id ***** \
--amazonec2-zone a \
sample
調整すべき値(amazonec2-xxxx)
パラメータ | 値 |
---|---|
access-key | 自分のアクセスキーを指定します |
secret-key | 自分のシークレットキーを指定します |
region | リージョンを指定します |
ami | Dockerを含んだイメージを指定します |
ssh-user | イメージで生成されるインスタンスに接続できるユーザを指定します |
instance-type | インスタンスタイプを指定します。無料枠がt2.microです |
root-size | EBSのサイズです |
security-group | 先ほど作成したセキュリティグループを指定します |
vpc-id | 先ほど作成したVPCか既存のVPCのIDを指定します |
subnet-id | 指定したVPCに属するサブネットのIDを指定します |
zone | 指定したsubnetに対応したアペイラビリティゾーンを指定します |
2015.12.11追記
未だにうまくいったりいかなかったりがあるようです。上のスクリプトは__--debug__を指定していますので何が失敗しているかがわかるかも。
ちなみに成功すると最後はこんな感じになります。
・・・
(sample) Calling RPCServerDriver.GetSSHUsername
Using SSH client type: external
Reticulating splines...
(sample) Calling RPCServerDriver.GetConfigRaw
(sample) Calling RPCServerDriver.GetConfigRaw
To see how to connect Docker to this machine, run: docker-machine env sample
> 通信状況の悪い環境でやると失敗することが多いような気がします。失敗した場合はamiイメージを変えてチャレンジしてみてください。
> なお、docker-machine ls してリストアップされるマシン以下のフォルダに格納されます。これが正常ケースです。ssh用の公開鍵/秘密鍵ペアの他に、プライベート認証局の秘密鍵と証明書、サーバーの秘密鍵と証明書、設定ファイルなどがあります。
> ```
$ ls -ort ~/.docker/machine/machines/sample
total 72
-rw------- 1 hagi 381 12 10 22:34 id_rsa.pub
-rw------- 1 hagi 1679 12 10 22:34 id_rsa
-rw-r--r-- 1 hagi 1123 12 10 22:42 server.pem
-rw------- 1 hagi 1679 12 10 22:42 server-key.pem
-rw------- 1 hagi 1679 12 10 22:42 key.pem
-rw-r--r-- 1 hagi 1050 12 10 22:42 cert.pem
-rw-r--r-- 1 hagi 1025 12 10 22:42 ca.pem
-rw------- 1 hagi 4213 12 10 22:43 config.json
失敗した場合はファイルが欠損しているようです。たとえば、証明書関連がないとか。
また、docker-machine ls
したときにSTATEが__Error__となるケースがあります。
NAME ACTIVE DRIVER STATE URL SWARM
sample - amazonec2 Error
>こうなった場合は、
> 1.証明書などが格納されているフォルダを削除する
> 2.AWS上のEC2インスタンスの残骸を削除する(あれば)
> 3 AWS上のキーペアの残骸を削除する(あれば)
> などの操作をしてから、あらためてチャレンジしてみてください。
>
> そのあたりの詳細はまた書きます。
# 9. glassfishをDockerコンテナとして導入する
[こちら](http://qiita.com/osuo/items/99a2b7413ce75f8217be#glassfishを動かす)を参考にして導入しましょう。
# 10. 楽しんで! have fun!
Docker環境がクラウド上にできました!あとは様々なDockerコンテナをビルドして動かしてみてください!
# つぎは、Trend Micro の Deep Security as a service の導入
セキュリティ対策です。AWSなどのクラウド上にサービスを提供する環境を置く際、やっぱりセキュリティは大丈夫なの?という心配が少なくないですよね。従量課金でAWS無料枠のt2.microだと、0.01USD/Hourです。908円/月程度です。(1USD=122円、24H x 31日)
![スクリーンショット 2015-10-22 22.34.53.png](https://qiita-image-store.s3.amazonaws.com/0/79341/7d7ea169-4dd4-224e-341b-099b3a100ce4.png "スクリーンショット 2015-10-22 22.34.53.png")
参考:http://www.trendmicro.com/cloud-content/us/pdfs/business/datasheets/ds_deep-security-as-a-service.pdf
導入手順はまた今度。