docker-machine, docker-compose, docker-swarm 覚書
TRANSCRIPT
docker-machinedocker-composer
docker-swarm“Author: Junya Nakazato
© CA Advance, Inc. All Rights Reserved 1
New Docker toolsDocker 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 lsNAME DRIVER STATE URLlinux virtualbox Stoppedlinux-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: - datastorenginx: 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/datastorerails: 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
LodgeQiita Clonedocker-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 create7988b7fb66edd9573eac62eefb87007f% 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 lsNAME DRIVER STATE URL SWARMswarm-master digitalocean Running tcp://45.55.184.3:2376 swarm-master (master)swarm-node01 digitalocean Running tcp://128.199.164.1:2376 swarm-masterswarm-node02 digitalocean Running tcp://128.199.163.254:2376 swarm-masterswarm-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 psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS63abf37db4cf dockerfile/nginx:latest "nginx" 11 seconds ago Up 6 seconds 443/tcp, 10.3.0.52:80->80/tcpd21f305376aa 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