dockerで遊ぶときにEC2で動かす 俺の2015年秋
この記事は、最後まで読んでも特に新しいことは書いてありません。
TL;DR
dockerで遊ぶとき、EC2も良いっすよ
dockerで遊ぶとき
docker-machineやcoreos-vagrantも良いツールなのですが、個人的にはEC2に落ちついてきました。
1つのホストの中にコンテナをぽこぽこ立てたり、マルチホスト環境とか作ったりして遊んでいます。
サンデープログラミングが捗るという感じです。
最近のことをメモがてらまとめておきます。
戦略
遊ぶ時の戦略(?)は、こんな感じです。
- 準備1: CoreOSで起動設定(LaunchConfigurations)を作っておく
- (作業時間2分以下)
- AMIはこのへんから、適当に。
- 準備2: AutoScalingGroupを作っておく
- (作業時間2分以下)
- このとき適当にロール当てておくと後でS3とかECS周りで便利(無くてもOK)
- 遊び始め
- AutoScalingで 手動で 希望インスタンス数を 0 -> N(N>=1) する
- (待つこと1〜3分)
- 遊ぶ:
- 自由に遊ぶ!!!
- 遊び終了
- AutoScalingで 手動で 希望インスタンス数を N -> 0 に戻す
遊んだ後にかたづけしないと課金がずっと続く パターンのやつです。
とくに気取った自動化はやっておらず、 「忘れずに0に戻す」 を実践して参ります。
CoreOS、Immutable度高い
CoreOSの場合、どうしても最初に設定されているべきことはuser-dataにcloud-configを書く必要出てきます。
ちゃんとcloud-config
書いておけば、こころ置きなく遊んだ後にシャットダウンできるという感じです。
「遊んだ後にシャットダウンする」と「cloud-config」は相性良い(気がする)。
開発環境としてのVagrant(+VirtualBox)
やdocker-machine
との対比
docker-machine(boot2docker)
との対比。
- メリット
- 自分の回線都合で
docker pull
が遅いとかいうことがなくなる - 自分のメモリ都合でVMが作れないということがなくなる
- production環境に近い
- ECSが試せる
- VirtualBox固有のハマりどころにハマらない
- 自分の回線都合で
- デメリット
- 金がかかる(t2.microを1ヶ月動かすと2000円ぐらいかかる)
- セキュリティグループだるい
- 起動が遅い
「金がかかる」に関しては、無料利用枠があるうちは無料ですね、私はまだ適用期間内なのでなんとか頑張っています。
「セキュリティグループがだるい」に関しては、まぁproductionで使う時もだるいので…
自分の場合、メリットの1番目が大きくて、わりとdocker pullが遅いのがイライラさせるとこだったんです。
ファミレスとかでテザリングを使う人間にとってこれはデカい。
あと、PCにどれくらい空いているメモリがあるか、ということでも話が違ってくると思う。