docker-machine
docker-composer
docker-swarm“Author: Junya Nakazato
© CA Advance, Inc. All Rights Reserved 1
NewDockertoolsDocker Marchine, Docker Compose, Docker Swarmをピックアップ!
© CA Advance, Inc. All Rights Reserved 2
docker-machineって?
公式docker 自動環境構築
EC2,digitalocean,Azure,virtualbox対応
© CA Advance, Inc. All Rights Reserved 3
digitaloceanに
デプロイするには…
© CA Advance, Inc. All Rights Reserved 4
howto :
digitaloceanにデプロイ
# 適宜取得
% export DIGITALOCEAN_TOKEN=TEKITOUNATOKEN
# サーバー構築!
% docker-machine create -d digitalocean 
--digitalocean-access-token=$DIGITALOCEAN_TOKEN 
--digitalocean-region "sgp1" 
--digitalocean-size "1gb" my-awesome-app
© CA Advance, Inc. All Rights Reserved 5
howto :
digitaloceanにデプロイ
docker-machine list!!!1
# 管理が楽になるね!
% docker-machine ls
NAME DRIVER STATE URL
linux virtualbox Stopped
linux-dev digitalocean Running tcp://128.199.164.1:2376
© CA Advance, Inc. All Rights Reserved 6
Local→VPS!!1vps-managerと(^_^)/~
# rails実験場が欲しければこれで
% docker -it $(docker-machine config myapp) run rails bash
% docker -it $(docker-machine config myapp) run rails c
# 終わったら削除
% docker-machine rm myapp
© CA Advance, Inc. All Rights Reserved 7
docker-composeって?
公式docker-tool 複数コンテナ同時実行
yaml形式で構成定義
マイクロサービスの実装形
fig買収->docker-compose
© CA Advance, Inc. All Rights Reserved 8
HOWTO : compose? 
開発フロー
» 1. docker-compose.ymlに構成を記載
» 2. %docker-compose build && docker-compose run
» 3. あとはサービスを使うだけ!
© CA Advance, Inc. All Rights Reserved 9
docker-compose.yml(1)
mysql:
image: mysql:5.7.7
environment:
MYSQL_ROOT_PASSWORD: 'melody'
ports:
- '3306:3306'
volumes_from:
- datastore
nginx:
build: containers/nginx
ports:
- '80:80'
volumes_from:
- datastore
links:
- rails
© CA Advance, Inc. All Rights Reserved 10
docker-compose.yml(2)
datastore:
build: containers/datastore
rails:
build: .
ports:
- '3000:3000'
environment:
RAILS_ENV: production
DATABASE_URL: mysql2://root:melody@mysql:3306
MYSQL_ROOT_PASSWORD: 'melody'
volumes_from:
- datastore
links:
- mysql
© CA Advance, Inc. All Rights Reserved 11
LodgeQiitaClone
docker-compose対応
% git clone http://github.com/j138/lodge-docker
© CA Advance, Inc. All Rights Reserved 12
docker-swarm!?
Dockerホストをクラスタ化
Docker-machineとの親和性あり
各種Dockerツールとの連携も今後予定
© CA Advance, Inc. All Rights Reserved 13
howto: docker-swarm1. トークン生成
% docker-swarm create
7988b7fb66edd9573eac62eefb87007f
% export SWARM_TOKEN=7988b7fb66edd9573eac62eefb87007f
© CA Advance, Inc. All Rights Reserved 14
howto: docker-swarm2. docker-machineでマシン構築
% docker-machine create -d digitalocean 
--digitalocean-access-token=$DIGITALOCEAN_TOKEN --swarm --swarm-master 
--swarm-discovery token://$SWARM_TOKEN swarm-master
% docker-machine create -d digitalocean 
--digitalocean-access-token=$DIGITALOCEAN_TOKEN --swarm 
--swarm-discovery token://$SWARM_TOKEN node01
© CA Advance, Inc. All Rights Reserved 15
howto: docker-swarm3. swarm-masterへの紐付けチェック
% docker-machine ls
NAME DRIVER STATE URL SWARM
swarm-master digitalocean Running tcp://45.55.184.3:2376 swarm-master (master)
swarm-node01 digitalocean Running tcp://128.199.164.1:2376 swarm-master
swarm-node02 digitalocean Running tcp://128.199.163.254:2376 swarm-master
swarm-node03 digitalocean Running tcp://128.199.167.1:2376 swarm-master
© CA Advance, Inc. All Rights Reserved 16
howto: docker-swarm4. コンテナの起動
紐つけたホストに対して、コンテナを分散して起動してくれる!
社内だと22番ポート閉じられてて、digitaloceanで試せなかった><
IPアドレスに注目!
% docker run -d -p 80:80 dockerfile/nginx
% docker run -d -p 80:80 dockerfile/nginx
% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
63abf37db4cf dockerfile/nginx:latest "nginx" 11 seconds ago Up 6 seconds 443/tcp, 10.3.0.52:80->80/tcp
d21f305376aa dockerfile/nginx:latest "nginx" 4 minutes ago Up 4 minutes 443/tcp, 10.3.0.67:80->80/tcp
© CA Advance, Inc. All Rights Reserved 17
いろいろ喋ったけど。。。
machine, compose, swarm
まだベータなので注意!
© CA Advance, Inc. All Rights Reserved 18
docker ❤
ENJOY!© CA Advance, Inc. All Rights Reserved 19

docker-machine, docker-compose, docker-swarm 覚書