Docker ( 9 ) ~ 複数コンテナの連携 3 ~

November 07, 2017

Docker Machine

Docker Machine は Docker ホストを構築するためのツール。
Docker ホストを構築するためには、ホストとなるハードウェアを容易し、OS をインストール、そして Docker サーバーをインストール・設定、という流れを汲む必要がある。
複数の Docker ホストがある場合は、全ての Docker ホストを統一的に管理できた方が楽。

Docker Machine はこのような Docker ホストの構築や管理を行うためのツールであり、物理ホストの構築を行うことはできないものの、VirtualBox や AWS などのクラウドサービス上の仮想マシン構築が簡単に行える。

Docker Machine のインストール

今回も Amazon Linux AMI を用いる。

$ cat /etc/os-release 
NAME="Amazon Linux AMI"
VERSION="2017.09"
ID="amzn"
ID_LIKE="rhel fedora"
VERSION_ID="2017.09"
PRETTY_NAME="Amazon Linux AMI 2017.09"
ANSI_COLOR="0;33"
CPE_NAME="cpe:/o:amazon:linux:2017.09:ga"
HOME_URL="http://aws.amazon.com/amazon-linux-ami/"

以下のコマンドでインストールする。

$ curl -L https://github.com/docker/machine/releases/download/v0.13.0/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine && chmod +x /tmp/docker-machine && sudo cp /tmp/docker-machine /usr/local/bin/docker-machine

$ docker-machine -v
docker-machine version 0.13.0, build 9ba6da9

Docker ホストの構築 (AWS EC2)

自分はなぜか知らないけど AWS が好きなので、Docker Machine から AWS EC2 で Docker ホストを構築する手法のみをここで紹介する。
まず、AWS EC2 上で Docker ホストを構築するためには、API を叩くためのアクセスキーとシークレットアクセスキーを環境変数に設定しておく。

$ export AWS_ACCESS_KEY_ID=XXXXXXXXXXXXXXXXXXXXXXX
$ export AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

以下のコマンドで一発 Launch!! (2 個たてちゃお)

$ docker-machine create -d amazonec2 --amazonec2-region ap-northeast-1 \
    --amazonec2-zone a \
    --amazonec2-instance-type t2.large \
    --amazonec2-root-size "50" \
    --amazonec2-vpc-id vpc-xxxxxxxx \
    --amazonec2-subnet-id subnet-xxxxxxxx \
    --amazonec2-security-group YourSecurityGroupName \
    DockerHost01

Running pre-create checks...
Creating machine...
(DockerHost01) Launching instance...
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Detecting the provisioner...
Provisioning with ubuntu(systemd)...
Installing Docker...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Checking connection to Docker...
Docker is up and running!
To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env DockerHost02

$ docker-machine create -d amazonec2 --amazonec2-region ap-northeast-1 \
    --amazonec2-zone c \
    --amazonec2-instance-type t2.large \
    --amazonec2-root-size "50" \
    --amazonec2-vpc-id vpc-xxxxxxxx \
    --amazonec2-subnet-id subnet-yyyyyyyy \
    --amazonec2-security-group YourSecurityGroupName \
    DockerHost02

Running pre-create checks...
Creating machine...
(DockerHost02) Launching instance...
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Detecting the provisioner...
Provisioning with ubuntu(systemd)...
Installing Docker...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Checking connection to Docker...
Docker is up and running!
To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env DockerHost02

実際にインスタンスが立ち上がっているのを確認できる。

f:id:shiro_kochi:2018××××××××:plain:w100:left

また、キーペアに関するオプションを指定していないため、キーペアが自動で作成されている。

f:id:shiro_kochi:2018××××××××:plain:w100:left

Docker ホストの確認

以下のコマンドにより、docker-machine 経由で構築した Docker ホストを確認できる。

$ docker-machine ls
NAME           ACTIVE   DRIVER      STATE     URL                         SWARM   DOCKER        ERRORS
DockerHost01   -        amazonec2   Running   tcp://13.112.45.249:2376            v17.10.0-ce   
DockerHost02   -        amazonec2   Running   tcp://52.197.250.209:2376           v17.10.0-ce  

また、ssh での接続も専用コマンドが存在。

$ docker-machine ssh DockerHost01
Welcome to Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-1020-aws x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  Get cloud support with Ubuntu Advantage Cloud Guest:
    http://www.ubuntu.com/business/services/cloud

118 packages can be updated.
42 updates are security updates.


ubuntu@DockerHost01:~$

 © 2023, Dealing with Ambiguity