連載
» 2015年10月09日 05時00分 UPDATE

Docker運用管理製品/サービス大全(2):OSSの管理ツールDocker Machine、Swarm、Compose、Kitematicの概要とインストール、基本的な使い方 (1/4)

数多く台頭しているDockerの運用管理に関する製品/サービスの特長、使い方を徹底解説する特集。今回は、Docker社が開発しているDocker Machine、Docker Swarm、Docker Compose、Docker Kitematicの概要と使い方を解説する。

[澤井健,株式会社NTTデータ]

 数多く台頭しているDockerの運用管理に関する製品/サービスの特長、使い方を徹底解説する本特集「Docker運用管理製品/サービス大全」。

 今回は、Docker社が開発しているDocker Machine、Docker Swarm、Docker Compose、Docker Kitematicの概要と使い方を解説します。

 内容は、2015年6月の記事執筆時のもので、対象ソフトウエアのバージョンは下記です。前回も触れましたが、それぞれの役割と共に記載しておきます。全てOSS(オープンソースソフトウエア)でライセンスはApache License 2.0です。なお環境構築手順の紹介では、Docker自体のバージョンは1.6を使っています。

  • Docker Machine(バージョン0.2):Dockerのホスト環境を構築
  • Docker Swarm(バージョン0.3):複数のDockerホストのグルーピング機能を提供
  • Docker Compose(バージョン1.2):コンテナーの多重化機能を提供
  • Docker Kitematic(バージョン0.7.3):MacやWindows環境にDockerコンテナーを構築、管理するためのGUIツール

Docker Machineの構成と機能概要

 Docker Machineは、ローカル環境から「docker-machine」コマンドを実行して、Docker Engineがインストールしてある仮想マシンインスタンスを作成するものです。そのため、docker-machineコマンドを実行する環境を用意する必要があります。

dockermanage2_1.jpg

 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は下記のコンポーネントを自動で作成します。

Amazon EC2インスタンス

 設定済みの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インスタンスと同名でキーペアを作成します。

SSH用の証明書

 ホームディレクトリ以下の「.docker/machine/machines」にssh用の証明書が作成されます。

主な機能

 Dockerイメージの管理・操作についてはリポジトリからDockerイメージをPullする機能を持ちます。Docker実行環境の自動セットアップも可能です。

 コンテナーの管理・操作については、作成/削除、起動/停止を行う機能、コンテナー作成時にCPU/メモリなどのリソースを設定する機能を持ちます。

 また、ホストの起動・停止を行う機能、稼働しているホストの構成を把握する機能、ホスト上のDockerソフトウエアをアップデートする機能、ホスト数を制御する機能があります。

 監視機能については、コンテナーの状態を監視する機能、クラスターを監視する機能(管理サーバーよりコンテナーの状態を取得する機能)、ホストの状態を監視する機能を持ちます。

 セキュリティについては、コンテナー作成などの実行を行う権限設定、コマンドの実行ログを確認する機能があります。

Docker Swarmの構成と機能概要

 Docker Swarmは、Docker Machineで作成したDocker実行環境をグルーピングするIDを発行するツールです。

dockermanage2_2.jpg

 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コマンドを実行すると下記のコンポーネントを自動で作成します。

EC2インスタンス

 --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オプションなしと同等のものが作成されます。

SSH用の証明書

 --swarmオプションなしと同等のものが作成されます。

Docker Composeの構成と機能概要

 Docker Engine上でコンテナーをグルーピングして多重化するためのツールです。「docker-compose」コマンドをホストにインストールして使用するため、docker-composeコマンドを実行する環境が必要になります。

構成

 あらかじめ複数のコンテナーを使ってシステムを構築したい場合などに「docker-compose.yml」ファイルに関係図を書いておけばdocker-composeコマンドを実行するだけで構成、実行が行えます。また、scaleオプションを使用することで、作成したコンテナーの構成を多重化することが可能です。

dockermanage2_3.jpg

 また、Docker Swarmと組み合わせることによって複数ホスト間でのグルーピングされたコンテナーの多重化ができます。

dockermanage2_4.jpg

主な機能

 Dockerイメージの管理・操作についてはリポジトリからDockerイメージをPullする機能を持ちます。

 コンテナーの管理・操作については、作成/削除、起動/停止を行う機能、コンテナー作成時にCPU/メモリなどのリソースを設定する機能を持ちます。異常な状態のコンテナーについては自動復旧は行わないので、手動でstartコマンドを実行する必要があります。

 クラスターの管理・操作については、クラスターを作成/削除する機能、クラスターに対してコンテナーの配備/削除を行う機能、クラスターに対してコンテナーの起動/停止/配置などを把握する機能、クラスターに対して配置するコンテナー数を制御する機能を持ちます。

 監視機能については、コンテナーの状態を監視する機能、クラスター内のコンテナーログの収集監視を行う機能を持ち、コンテナーが使用しているホストのポートの監視が可能です。

Docker Kitematicの構成と機能概要

 MacやWindows環境でDockerをGUIで扱うためのツールです。KitematicはDocker Machineと結合してVirtualBoxやDocker Engineをローカルマシンにインストールします。そして、インストールされたVirtualBox上でコンテナーを動かします。リモートのDocker Engineを管理下に置くことはできません。

 Dockerイメージの管理・操作についてはリポジトリからDockerイメージをPullする機能を持ちます。Docker実行環境の自動セットアップも可能です。

 コンテナーの管理・操作については、作成/削除、起動/停止を行う機能、コンテナー作成時にCPU/メモリなどのリソースを設定する機能を持ちます。

 監視機能については、コンテナーの状態を監視する機能、コンテナーログの収集監視を行う機能を持ちます。

 Kitematicの具体的な動きは「Docker KitematicによるDocker環境の構築」の章で記載しています。

       1|2|3|4 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。