OSSの管理ツールDocker Machine、Swarm、Compose、Kitematicの概要とインストール、基本的な使い方:Docker運用管理製品/サービス大全(2)(1/4 ページ)
数多く台頭している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(バージョン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コマンドを実行する環境を用意する必要があります。
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を発行するツールです。
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オプションを使用することで、作成したコンテナーの構成を多重化することが可能です。
また、Docker Swarmと組み合わせることによって複数ホスト間でのグルーピングされたコンテナーの多重化ができます。
主な機能
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環境の構築」の章で記載しています。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 所要時間わずか10分で「Docker」を体験しよう――Azureで始めるDocker入門
2014年から急速に注目度が増しているコンテナー型仮想化技術「Docker」。すでに多くのLinuxで利用可能な技術ですが、次期Windows Serverでもサポートされる予定です。Dockerとはどのようなものなのか、一度、実際に触って体験してみてはいかがでしょうか。 - Linux/OSSに不慣れでも大丈夫! WindowsでDockerを扱う際のポイント
本連載第31回は「Azureで始めるDocker入門」を掲載しました。掲載後、すぐに「Docker 1.6」がリリースされたので、意図したわけではありませんが、タイムリーな記事になったと思います。今回は、その記事でも紹介した「Docker Client for Windows」をフォローアップします。 - Docker代替のコンテナーランタイム「Rocket」をCoreOSが公開
CoreOSがDocker代替のシンプルなコンテナーランタイムを公開。Dockerの当初の目的であるシンプルなコンテナーを目指すプロトタイプだ。 - Docker、そしてCloud FoundryとPaaSの価値とは
Docker人気を踏まえたとき、Cloud Foundryはどのように位置付けられるのか。PaaSの最終的な価値とは何なのか。AWSとの競合とは。Cloud Foundryの責任者である米PivotalのJames Watters氏に聞いた。 - レッドハットが発表したOpenShift Enterprise 3は「Dockerを知らなくても使える」基盤
レッドハットが2015年7月22日に国内発表したPaaS製品「OpenShift Enterprise 3」の最大の狙いは、Dockerを知らなくてもアプリケーションの開発・運用ができるようにすることだという。ここでは、レッドハットの日本法人の説明に基づき、OpenShift Enterprise 3を紹介する。 - 米グーグルのDockerコンテナ管理サービスが一般提供開始
米グーグルがGoogle Cloud Platform上で提供しているDockerコンテナオーケストレーション/管理サービス、Google Container Engineが2015年8月26日、ベータ段階を終了、一般提供が開始された。毎週20億以上のコンテナを立ち上げているグーグルの経験に基づくサービスだとしている。