Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

いくらなんでも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
hatena-corp
「知る」「つながる」「表現する」で新しい体験を提供し、人の生活を豊かにする
https://hatenacorp.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした