Managed VMs with Docker
- GCP入門編
- ビッグデータ
こんにちは。@sinmetal です
昨日のGCP Liveより、Managed VMsのDockerがだれでも触れるようになったようです。
Managed VMsがどんなものなのかは以下を見てください
目次
動かし方
Docker install
まずはDockerをinstallします。
	https://cloud.google.com/appengine/docs/python/managed-vms/#install-docker
gcloud sdk install
次にgcloud sdkをinstallします。
	https://cloud.google.com/sdk/
sample project download
今回はCustom RuntimeのサンプルであるnginxをMVMsで動かしてみました。
以下からcheck outします。
	https://github.com/GoogleCloudPlatform/appengine-nginx-hello
boot2docker 起動
#!bash
	$ boot2docker up
	Waiting for VM and Docker daemon to start...
	...........................
	Started.
	To connect the Docker client to the Docker daemon, please set:
	    export DOCKER_HOST=tcp://192.168.59.103:2375
	Consoleに従いexport
#!bash
	$ export DOCKER_HOST=tcp://192.168.59.103:2375
	MVMsをLocalで動かす
#!bash
	$ gcloud preview app run appengine-nginx-hello
	Module [default] found in file [/Users/sinmetal/workspace/appengine-nginx-hello/app.yaml]
	INFO: Looking for the Dockerfile in /Users/sinmetal/workspace/appengine-nginx-hello
	INFO: Using Dockerfile found in /Users/sinmetal/workspace/appengine-nginx-hello
	INFO: Skipping SDK update check.
	INFO: Starting API server at: http://localhost:64798
	INFO: Health checks starting for instance 0.
	INFO: Building image sandbox4sinmetal-tg.default.1...
	INFO: Starting module "default" running at: http://localhost:8080
	INFO: Starting admin server at: http://localhost:8000
	INFO: Image sandbox4sinmetal-tg.default.1 built, id = 1ef40a5ed46c
	INFO: Creating container...
	INFO: Container dcaac6cac83c496f34531b32d240a10c3256786e36ea3076a3f249357e7f152f created.
	INFO: default: "GET /_ah/start HTTP/1.1" 200 2
	INFO: default: "GET /_ah/health?IsLastSuccessful=no HTTP/1.1" 200 2
	http://localhost:8080
nginxが動いていることを確認

Deploy
#!bash
	$ gcloud --project YOUR_PROJECT_NAME preview app deploy appengine-nginx-hello
	AppEngine Versions Check
Developers ConsoleのAppEngine Versionを確認してみましょう。
	INSTANCESに(google-managed)と書いてあるものがMVMsのinstanceです。
	
Compute Engine VM instances Check
Developers ConsoleのCompute Engine VM instancesを確認してみましょう

Delete!
試し終わったら、忘れないようにAppEngine Versionsから、該当のVersionを消してください。
	Compute Engine VM instancesからも消えていることを確認して下さい。
	MVMsはAppEngine instance hourではなく、Compute Engine instanceのPriceに従うので、アクセスが0でも立ち上げてる間は課金が発生します。
所感
MVMsは怠惰なAppEngineUserがComputeEngineを使うのに、非常に便利な機能だが、今までAppEngineを使ってきたUserにとってのメリット・デメリットがある。
メリット
制限が無い自由な世界
Local Fileも使えるし、binary toolだって使える。imagemagic, Redisなどを入れることもできる。
Custom Runtime
ここまで来ると、AppEngineじゃなくね!?感すらもあるCustom Runtime。
	今回試したnginxもそうだけど、TaskQueueやMemcacheなどのRPC仕様は公開されてないので、AppEngineのSDKが無いと叩けないという点はあるけど、特殊なことをさせたいModuleを作るには便利だろう。
デメリット
BillingがComputeEngine
autoscale設定でもmin instanceの最小値が1なので、アクセスが0でも課金が発生し続けてしまう。
	Versionごとにinstanceが立ち上がったままになるので、過去Versionを雑に放置しておくことができなくなりそうだ。
最後に
k8sを利用するGKEが出ましたが、MVMsのinstanceの中にもk8sはいます。
	そろそろ、使う側からすると、PaaS,IaaSと呼ばれていた垣根が無くなってきているのかもしれませんね。
	IaaS上に生で自分で作るも良し、一番下はIaaSだが、その上に構成を作ってくれてるやつを使うも良し、そして、どこまで作ってくれてるかのスタート地点を選べるって感じですね。
#!bash
	shingo_ishimura_topgate_co_jp@gae-default-gbdocker2-8nxi:~$ sudo docker ps
	CONTAINER ID        IMAGE                                          COMMAND                CREATED             STATU
	S              PORTS                    NAMES
	06540d608720        sandbox4sinmetal-tg.default.gbdocker2:latest   "/home/vmagent/jetty   3 minutes ago       Up 3
	minutes        0.0.0.0:8080->8080/tcp   stoic_euclid
	ff97de497da4        google/docker-registry:latest                  "./run.sh"             4 minutes ago       Up 4
	minutes                                 k8s_docker-registry.150cc442_1.http_01a42cd2
	16b104d8ff85        google/cadvisor:latest                         "/usr/bin/cadvisor"    4 minutes ago       Up 4
	minutes                                 k8s_cadvisor.417cd83c_cadvisor-agent.file_514066ea
	64ca69d6b96b        kubernetes/pause:latest                        "/pause"               4 minutes ago       Up 4
	minutes        0.0.0.0:4194->8080/tcp   k8s_net.f72d85c8_cadvisor-agent.file_0a0a306f
	e118d364ace5        kubernetes/pause:latest                        "/pause"               4 minutes ago       Up 4
	minutes        0.0.0.0:5000->5000/tcp   k8s_net.6bc9867a_1.http_40dd0523
	f241a910da62        google/appengine-fluentd-logger:latest         "/usr/lib/fluent/rub   4 minutes ago       Up 4
	minutes                                 prickly_engelbart
	shingo_ishimura_topgate_co_jp@gae-default-gbdocker2-8nxi:~$
	Contactお問い合わせ
 
Google Cloud / Google Workspace導入に関するお問い合わせ

 
                       
                      