はじめに
以下のツールについて書いてある
- Docker Machine
- Docker Swarm
- Docker Compose
Docker Composeは実際に手を動かしてないので、後日実際に動かして追記する。
Docker Machine
ひとことで言うと
複数の環境に、Dockerのホストを構築する。
出典 : https://training.docker.com/self-paced-training
インストール(ubuntuの場合)
$ wget https://github.com/docker/machine/releases/download/v0.2.0/docker-machine_linux-amd64
$ sudo mv docker-machine_linux-amd64 /usr/local/bin/docker-machine
$ sudo chmod 755 /usr/local/bin/docker-machine
$ docker-machine -v
docker-machine version 0.2.0 (8b9eaf2)
docker machine経由でAmazon EC2にホストを追加(東京リージョン)
東京リージョンに、最新版のAmazonLinux OSを元に立ち上げる。
アクセスキーなどが必要なので、AWSのIAMから、事前にcredentials情報を持ってくる。
その他インスタンスサイズなども指定できる。
詳しくはこちら。
$ docker-machine create --driver amazonec2 \
--amazonec2-access-key AKIAIVZOXTFWY2PTRL2Q \
--amazonec2-secret-key <SECRET KEY> \
--amazonec2-region ap-northeast-1 \
--amazonec2-vpc-id vpc-9fcb6dfa \
--amazonec2-ami ami-b36d4edd \
aws01
サーバのタグで、「NAME=aws01」のインスタンスが立ち上がる。
ちゃんと管理できてるか確認。
$ docker-machine ls
aws01 amazonec2 Running tcp://54.238.232.136:2376
aws02 amazonec2 Running tcp://54.238.232.139:2376
$ docker-machine ssh aws01
Welcome to Ubuntu 15.10 (GNU/Linux 4.2.0-18-generic x86_64)
* Documentation: https://help.ubuntu.com/
Get cloud support with Ubuntu Advantage Cloud Guest:
http://www.ubuntu.com/business/services/cloud
New release '16.04 LTS' available.
Run 'do-release-upgrade' to upgrade to it.
*** System restart required ***
ubuntu@aws01:~$
ちゃんとログインできる。
Docker Swarm
ひとことで言うと
一つのホストから、設定した子ノードに対しコマンドを実行する。
出典 : https://training.docker.com/self-paced-training
インストール
Docker imageから持ってこれる。
Swarmを動かす管理サーバで以下のコマンドを設定。
$ docker run --rm swarm create # --rm : 一度走らせたら削除する
Unable to find image 'swarm:latest' locally
latest: Pulling from library/swarm
1e61bbec5d24: Pull complete
8c7b2f6b74da: Pull complete
245a8db4f1e1: Pull complete
Digest: sha256:661f2e4c9470e7f6238cebf603bcf5700c8b948894ac9e35f2cf6f63dcda723a
Status: Downloaded newer image for swarm:latest
647827dc0d841af8a1d15a5dc0143cca
$ vim clustertoken
647827dc0d841af8a1d15a5dc0143cca
docker run -d -P swarm manager token://647827dc0d841af8a1d15a5dc0143cca
ノードサーバでの作業
Swarmのコマンドを指定するサーバで、以下のコマンドを事項。
$ sudo service docker stop
$ sudo vim /default/docker
# 以下の部分を追記
DOCKER_OPTS="-H 0.0.0.0:2375"
$ DOCKER_HOST=localhost:2375
$ export DOCKER_HOST
$ sudo service docker start
$ docker -run -d swarm join --addr=<サーバのパブリックIP>:2375 token://<管理サーバで発行されたトークン>
管理サーバでコマンドを実行
※ 実際に動かせてないので、後日追記する。
$ docker info
# 設定したノードの情報
$ docker run -d -P nginx
# 各ノードにnginxイメージが作られる
Docker Compose
ひとことで言うと
複数のアプリケーション用コンテナを一度につくる
出典 : https://training.docker.com/self-paced-training
ざっくり説明
docker-compose.ymlにコンテナの全設定を記載しておく。
docker-compose.ymlの書式
service01:
build: .
comand: xxxx
links:
- service02
service02:
image: redis
docker-compose up
で全コンテナが作られる。
※ 実際に動かしてないので、後日追記する
まとめ
docker、こんなこともできるのか。
ちゃんと動かしてなかったから知らなかったけど、すごい応用が効く。