LoginSignup
19
15

More than 5 years have passed since last update.

[Docker]複数ホスト管理ツールのまとめ

Posted at

はじめに

Docker Operationsのメモ。

以下のツールについて書いてある

  • Docker Machine
  • Docker Swarm
  • Docker Compose

Docker Composeは実際に手を動かしてないので、後日実際に動かして追記する。

Docker Machine

ひとことで言うと

複数の環境に、Dockerのホストを構築する。
DockerMachine2.png
出典 : 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

ひとことで言うと

一つのホストから、設定した子ノードに対しコマンドを実行する。
DockerSwarm.png
出典 : 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

ひとことで言うと

複数のアプリケーション用コンテナを一度につくる
DockerCompose.png
出典 : 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、こんなこともできるのか。
ちゃんと動かしてなかったから知らなかったけど、すごい応用が効く。

19
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
15