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
実際にインスタンスが立ち上がっているのを確認できる。
また、キーペアに関するオプションを指定していないため、キーペアが自動で作成されている。
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:~$