数多く台頭しているDockerの運用管理に関する製品/サービスの特長、使い方を徹底解説する特集。今回は、Docker社が開発しているDocker Machine、Docker Swarm、Docker Compose、Docker Kitematicの概要と使い方を解説する。
数多く台頭しているDockerの運用管理に関する製品/サービスの特長、使い方を徹底解説する本特集「Docker運用管理製品/サービス大全」。
今回は、Docker社が開発しているDocker Machine、Docker Swarm、Docker Compose、Docker Kitematicの概要と使い方を解説します。
内容は、2015年6月の記事執筆時のもので、対象ソフトウエアのバージョンは下記です。前回も触れましたが、それぞれの役割と共に記載しておきます。全てOSS(オープンソースソフトウエア)でライセンスはApache License 2.0です。なお環境構築手順の紹介では、Docker自体のバージョンは1.6を使っています。
Docker Machineは、ローカル環境から「docker-machine」コマンドを実行して、Docker Engineがインストールしてある仮想マシンインスタンスを作成するものです。そのため、docker-machineコマンドを実行する環境を用意する必要があります。
Docker MachineはAmazon Web Services(以下、AWS)、Google Cloud Platform(以下、GCP)、IBM SoftLayer、Microsoft Azure、Hyper-V、OpenStack、Rackspace、Oracle VM VirtualBox(以下、VirtualBox)、VMWare Fusion、vCloud Air、vSphere、Digital Ocean、Exoscale、VM Host with SSHの環境に対してドライバーを持っており、仮想マシンインスタンスを作成・削除することが可能です。
例えば、AWSに対してdocker-machineコマンドが実行されるとdocker-machineは下記のコンポーネントを自動で作成します。
設定済みのDocker Engineをインストール済みのAmazon EC2(以下、EC2)インスタンスを作成します。
Docker Engineは下記の証明書を使用してポート2376で通信を行う設定が行われたプロセスとして起動します。
/usr/bin/docker -d --tlsverify --tlscacert=/etc/docker/ca.pem --tlskey=/etc/docker/server-key.pem --tlscert=/etc/docker/server.pem --label=provider=amazonec2 --host=unix:///var/run/docker.sock --host=tcp://0.0.0.0:2376"
docker-machineコマンドで、デフォルトで使用されるAMI(Amazon Machine Image)はドキュメントに記載があります。
デフォルト名「dockermachine」でインバウンド「22」「2376」のポートのセキュリティグループを作成します。
EC2インスタンスと同名でキーペアを作成します。
ホームディレクトリ以下の「.docker/machine/machines」にssh用の証明書が作成されます。
Dockerイメージの管理・操作についてはリポジトリからDockerイメージをPullする機能を持ちます。Docker実行環境の自動セットアップも可能です。
コンテナーの管理・操作については、作成/削除、起動/停止を行う機能、コンテナー作成時にCPU/メモリなどのリソースを設定する機能を持ちます。
また、ホストの起動・停止を行う機能、稼働しているホストの構成を把握する機能、ホスト上のDockerソフトウエアをアップデートする機能、ホスト数を制御する機能があります。
監視機能については、コンテナーの状態を監視する機能、クラスターを監視する機能(管理サーバーよりコンテナーの状態を取得する機能)、ホストの状態を監視する機能を持ちます。
セキュリティについては、コンテナー作成などの実行を行う権限設定、コマンドの実行ログを確認する機能があります。
Docker Swarmは、Docker Machineで作成したDocker実行環境をグルーピングするIDを発行するツールです。
Docker SwarmはDocker Engine上のコンテナーで動作します。swarmコンテナーを作成してIDを発行し、docker-machineコマンドの「--swarm」オプションとして設定し実行するため、dockerコマンド、docker-machineコマンドの実行環境が必要です。
後述の「Docker Swarmによるクラスター環境構築」の章で実際の手順を記載しますが、グルーピングを行うIDを発行後にdocker-machineコマンドに「--swarm」「--swarm-master」「--swarm-discovery」オプションを付けて実行し、Docker Engineのグルーピングを行います。
--swarm-masterオプションを付けてコマンドを実行すると、マスター用のインスタンスが作成されます。--swarm-masterオプションを付けずに実行すると、ノード用のインスタンスが作成されます。
マスター用のインスタンスはリモートからリクエストを受けてグルーピングされたインスタンスに対してコマンドを実行します。次回紹介するKubernetesとは異なり、マスター用のインスタンスでもコンテナーは実行されます。
ノード用のインスタンスはマスターのコマンドに従いコンテナーを作成して実行するインスタンスになります。
--swarmオプション付きでdocker-machineコマンドを実行すると下記のコンポーネントを自動で作成します。
--swarmオプションなしの場合と同等のDocker Engineが作成され、dockerプロセスが自動起動します。
--swarmオプション付きの場合はdockerプロセスに加えて、swarm-agentのコンテナーが自動で作成されて、下記のプロセスが自動実行されます。
docker ps 00a30bf1b191 swarm:latest ""/swarm join --addr 20 hours ago Up 20 hours 2375/tcp swarm-agent ps -ef root 29981 29752 0 Jun23 ? 00:00:21 /swarm join --addr <IP>:2376 token://db42d7f57dcb99f07d8f331a5a9007c6
上記に加えて、--swarm-masterオプション付きの場合は、さらにswarm-masterのコンテナーが自動で作成されて、下記のプロセスが自動実行されます。
docker ps a78484039967 swarm:latest ""/swarm manage --tls 22 hours ago Up 22 hours 2375/tcp, 0.0.0.0:3376->3376/tcp swarm-agent-master ps -ef root 30077 29831 0 Jun23 ? 00:03:33 /swarm manage --tlsverify --tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/server.pem --tlskey=/etc/docker/server-key.pem -H tcp://0.0.0.0:3376 token://db42d7f57dcb99f07d8f331a5a9007c6"
Masterサーバーには--swarmオプションなしのポートに加えて、ポート「3376」がインバウンドに追加されたセキュリティグループが作成されます。Nodeサーバーには--swarmオプションなしと同等のものが作成されます。
--swarmオプションなしと同等のものが作成されます。
--swarmオプションなしと同等のものが作成されます。
Docker Engine上でコンテナーをグルーピングして多重化するためのツールです。「docker-compose」コマンドをホストにインストールして使用するため、docker-composeコマンドを実行する環境が必要になります。
あらかじめ複数のコンテナーを使ってシステムを構築したい場合などに「docker-compose.yml」ファイルに関係図を書いておけばdocker-composeコマンドを実行するだけで構成、実行が行えます。また、scaleオプションを使用することで、作成したコンテナーの構成を多重化することが可能です。
また、Docker Swarmと組み合わせることによって複数ホスト間でのグルーピングされたコンテナーの多重化ができます。
Dockerイメージの管理・操作についてはリポジトリからDockerイメージをPullする機能を持ちます。
コンテナーの管理・操作については、作成/削除、起動/停止を行う機能、コンテナー作成時にCPU/メモリなどのリソースを設定する機能を持ちます。異常な状態のコンテナーについては自動復旧は行わないので、手動でstartコマンドを実行する必要があります。
クラスターの管理・操作については、クラスターを作成/削除する機能、クラスターに対してコンテナーの配備/削除を行う機能、クラスターに対してコンテナーの起動/停止/配置などを把握する機能、クラスターに対して配置するコンテナー数を制御する機能を持ちます。
監視機能については、コンテナーの状態を監視する機能、クラスター内のコンテナーログの収集監視を行う機能を持ち、コンテナーが使用しているホストのポートの監視が可能です。
MacやWindows環境でDockerをGUIで扱うためのツールです。KitematicはDocker Machineと結合してVirtualBoxやDocker Engineをローカルマシンにインストールします。そして、インストールされたVirtualBox上でコンテナーを動かします。リモートのDocker Engineを管理下に置くことはできません。
Dockerイメージの管理・操作についてはリポジトリからDockerイメージをPullする機能を持ちます。Docker実行環境の自動セットアップも可能です。
コンテナーの管理・操作については、作成/削除、起動/停止を行う機能、コンテナー作成時にCPU/メモリなどのリソースを設定する機能を持ちます。
監視機能については、コンテナーの状態を監視する機能、コンテナーログの収集監視を行う機能を持ちます。
Kitematicの具体的な動きは「Docker KitematicによるDocker環境の構築」の章で記載しています。
Copyright © ITmedia, Inc. All Rights Reserved.