LoginSignup
30
26

More than 5 years have passed since last update.

GCP(Google Compute Engine) に Docker Machine を置く

Last updated at Posted at 2015-11-07

いくらなんでもMacBookでは重すぎるのでGoogle Compute Engineに置くことにした。

こちらを参考にしながら。

事前準備

gcloud の最新版のインストール

pip install gcloud

gcloud にログイン

gcloud auth login

デフォルトだとブラウザが立ち上がってログインさせられる。

Google Compute Engine で Nginxコンテナを動かしてみる

docker-machine を作成する

作業用ならプリエンプティプルインスタンスを利用することでだいぶ安くなるのと、間違って放置しても24時間で消えてくれるので --google-preemptible は指定するべき。あとタグとして http-serverhttps-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" してればつながると思うんだけど、たまに間違ってたりするのでコンソールで見直そう。

スクリーンショット 2015-11-07 19.38.01.png

Docker Machine で GCE のインスタンスを作ると登録される公開鍵の形式が変

DockerMachineさんが自動生成した認証情報をインスタンスに自動登録してくれているんだけど、公開鍵にユーザ名が書かれていないので、そのまま編集しようとすると保存できない。「無効なキーです」と怒られる。

スクリーンショット 2015-11-08 9.37.51.png

慌てず、末尾になんか適当な username を追加してあげよう。username@example.comとメールアドレス形式で書かれているが、適当な名前でよい。

使い終わったら

docker-machine コマンドで落とすと GCE側でインスタンスがちゃんと消えてくれる。

$ docker-machine rm newton
30
26
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
26