如法会 1の資料です。
docker-machineでGCEのプリエンプティブルVMを利用するにはcreate
する際に--google-preemptible
オプションを指定するだけです。一度createしたものを一度stopし、startした場合もプリエンプティブルVMになります。
n1-standard-1でも、1時間で$0.015です。カスタムしてもちゃんとお安くなるようです。
例
$ gcloud auth login
$ docker-machine create --driver google --google-project PROJECT_ID --google-preemptible --google-zone asia-east1-c [Dockerマシン名]
PROJECT_IDはご自分のPROJECT_IDをご指定ください。
--google-zoneも好みものをご指定ください。
引数は環境変数をつかって指定することもできるので、direnvなどで作業用ディレクトリをつくってあげて作業してます。
docker-machine create --driver google --google-project eiel-0224 --google-premptible --google-zone asia-east1-c dev
プリエンプティブルVMで動いているかどうかは
インスタンスの作成はできたけどdocker動かない
途中で失敗してdockerがインストールされないことがあった。
docker machineの名前がdevの場合は以下で再インストール処理ができる。
$ docker-machine provision dev
再起動時によくつながらなくなる
IPが変わるからなのかしらないけど、証明書が無効になってる感じがする。起動するときはだいたい以下の感じ。
$ docker-machine start dev
$ docker-machine docker-machine regenerate-certs
$ eval $(docker-machine env dev)
勝手に停止する
プリエンプティブルインスタンスなので仕方ない。
なぜプリエンプティブルインスタンスを使うのか
安い。70%OFFらしい。
n1-standard 1時間ぐらいなら 2円ぐらい。
なぜdocker-machineを--driver googleを利用するのか。
- 比較的安い。課金が分単位(最低10分)
- dockerを試したいがローカルのディスクが残り少ない
一応いろいろ比較してみる。
プリエンプティブルVM安いけど、いろいろ考慮するとDigitalOceanは安いかもしれない。AWSのスポットインスタンスも安いけどなんとも言いがたい。
インスタンス | 1時間あたりのコスト | 1日8時間 1ヶ月利用(243時間) | vCPU | メモリ |
---|---|---|---|---|
GCE n1-standard プリエンプティブル | $0.015/h | $4.02 | 1 | 3.75GB |
GCE n1-standard 普通に利用 | $0.050/h | $12 | 1 | 3.75GB |
Degitial Ocean $0.03/hr | $0.03/h | $7 | 2 | 2G |
Degitial Ocean $0.06/hr | $0.06/h | $14 | 2 | 4G |
Azure A1 | $0.055/h | $13 | 1 | 1.75G |
Azure A2 | $0.11/h | $26 | 2 | 3.5G |
AWS t2.small | $0.013/h | $6.3 | 1 | 3G |
AWS t2.medium | $0.052/h | $12.636 | 2 | 4G |
AWS m4.large | $0.12/h | $29 | 2 | 8G |
AWS m4.large | $0.0183/h | $4 | 2 | 8G |
注意点
突然停止されることがある 24時間起動できない
シャットダウンまでの猶予は30秒