いくらなんでもMacBookでは重すぎるのでGoogle Compute Engineに置くことにした。
こちらを参考にしながら。
事前準備
gcloud の最新版のインストール
pip install gcloud
gcloud にログイン
gcloud auth login
デフォルトだとブラウザが立ち上がってログインさせられる。
Google Compute Engine で Nginxコンテナを動かしてみる
docker-machine を作成する
作業用ならプリエンプティプルインスタンスを利用することでだいぶ安くなるのと、間違って放置しても24時間で消えてくれるので --google-preemptible
は指定するべき。あとタグとして http-server
と https-server
を指定しておくと、80と443が空くので便利です。(セキュリティには気をつけて)
$ docker-machine create -d google \
--google-project <PROJECT_NAME> \
--google-preemptible \
--google-tags 'http-server,https-server' \
--google-zone asia-east1-a \
--google-machine-type "g1-small" \
newton
でけた。
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
default - virtualbox Running tcp://192.168.99.100:2376
newton - google Running tcp://XXX.XXX.XXX.XXX:2376
docker-machine を切り替える。
$ eval $(docker-machine env newton)
$ docker info
Containers: 1
Images: 12
Server Version: 1.9.0
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 14
Dirperm1 Supported: true
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.19.0-28-generic
Operating System: Ubuntu 14.04.3 LTS
CPUs: 1
Total Memory: 3.614 GiB
Name: newton
ID: GSHG:YOET:XXXX:EZ7T:CWX4:S4CC:6HZX:XXXX:OAPR:STQE:WKTH:LCBR
WARNING: No swap limit support
Labels:
provider=google
nginxを起動してみる
$ docker pull nginx
$ docker run -d -p 80:80 --name nginx nginx
c9ff75a9d98b9f0171e6bbcf7b475c45c8ecff980ca0e67264dc6bd895f85c65
素のまま作る。
動作確認
httpトラフィックを許可してあげればアクセスできるようになる。
$ curl http://$(docker-machine ip newton)
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page,
....
よしよし。
http ポートにアクセスできない場合
$ curl http://$(docker-machine ip newton)
curl: (7) Failed to connect to XXX.XXX.XXX.XXX port 80: Operation timed out
あれ・・・?
と思ったけどGCEのインスタンスはデフォルトでは外部からのhttpリクエストを受け付けない。上の手順で --google-tag "http-server"
してればつながると思うんだけど、たまに間違ってたりするのでコンソールで見直そう。
Docker Machine で GCE のインスタンスを作ると登録される公開鍵の形式が変
DockerMachineさんが自動生成した認証情報をインスタンスに自動登録してくれているんだけど、公開鍵にユーザ名が書かれていないので、そのまま編集しようとすると保存できない。「無効なキーです」と怒られる。
慌てず、末尾になんか適当な username を追加してあげよう。username@example.comとメールアドレス形式で書かれているが、適当な名前でよい。
使い終わったら
docker-machine コマンドで落とすと GCE側でインスタンスがちゃんと消えてくれる。
$ docker-machine rm newton