Dockerの管理・監視ツール(1)

2015年10月20日(火)
古賀 政純

ITシステムが地方に散在する場合、Dockerに精通した管理者が不在であることも少なくありません。Dockerに詳しくない人でも、効率よく、かつ、ミスなく管理するためには、GUI管理・監視ツールの導入が必要になります。特に、近年では、クラウド基盤の導入が進み、IT部門だけでなく、ユーザー部門などが、セルフサービスポータルのダッシュボードのWebユーザーインタフェースなどを使って、みずからサービスを利用することも増えてきました。現在は、OpenStackなどに代表されるクラウド基盤ソフトウェアは、Linuxのハイパーバイザー型仮想化技術であるKVMをベースとした仮想マシン(インスタンス)の管理が中心ですが、Dockerにおいても、クラウド基盤に見られるセルフサービスポータルのような、直観的で分かりやすい管理画面が求められています。2015年9月中旬現在、Dockerコンテナを簡単なGUIで操作し、管理・監視するためのツールがいくつもリリースされています。本稿では、そのなかでも、Dockerコンテナの管理ツールとして有名なものをいくつか取り上げ、具体的なインストール手順や簡単な使用法を紹介します。

非常にシンプルな「DockerUI」

DockerUIは、非常にシンプルなDockerのGUI管理ツールです。非常に簡単にDockerコンテナを管理することができます。ただし、2015年9月現時点で、DockerUIには、標準で暗号化通信やユーザー認証の機能がありません。ですので、標準のDockerUIでは、マルチテナントや複数の部署にまたがる用途には向いていませんが、部署内で、Dockerに不慣れた管理者が部内で簡易的に利用する場合に適しているでしょう。また、非常に直観的なユーザーインタフェースになっていますので、操作に迷うことなくDockerイメージやコンテナを管理することができます。

[補足]

DockerUIにおいて、ユーザー認証や暗号化通信を行うには、Apache Webサービスのmod_proxyやmod_sslを使い、DockerUIをビルドする必要があります。
https://github.com/crosbymichael/dockerui/wiki/DockerUI-with-TLS-encryption-and-client-authentication

Docker UIのインストール

DockerUIは、Dockerイメージが用意されているため、Docker環境があれば、簡単に利用することができます。以下では、すでにDocker環境がインストールされているCentOS 7.1上にDockerUIをインストールします。

# docker run -d -p 9000:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock dockerui/dockerui

DockerUIが入ったDockerコンテナが起動しているかを確認します。

# docker ps -a
CONTAINER ID  IMAGE              COMMAND     ... STATUS         PORTS                   NAMES
7d21a4b2f496  dockerui/dockerui  "/dockerui" ... Up 15 seconds  0.0.0.0:9000->9000/tcp  focused_mcclintock

これで、DockerUIが利用可能になりました。

DockerUIによる管理

DockerUIにアクセスするには、WebブラウザでDockerUIのDockerコンテナが稼働するホストOSのIPアドレス、または、FQDNに9000番ポートを指定します。FQDNで指定する場合は、/etc/hostsあるいは、DNSサーバーによる名前解決が必要です。

http://DockerUIのDockerコンテナが稼働するホストOSのFQDN:9000

DockerUIのWeb管理画面にアクセスすると、ユーザー認証もなく管理画面が表示されます。現在稼働しているコンテナなどの情報がダッシュボードに表示されています。

DockerUIの管理画面の「Containers」をクリックすると、現在のコンテナ一覧が表示されます。

「Images」をクリックすると、ホストOSに現在登録済みのDockerイメージの一覧が表示されます。

今回は、ホストOS上のコマンドラインから、以下のコマンドを使ってCentOS 5.11のDockerイメージを入手します。

# docker pull centos:centos5.11

DockerUIのDockerイメージの管理画面で、Dockerイメージのcentos:centos5.11の「Id」欄に表示されているコンテナIDをクリックします。

すると、Dockerイメージに関する概要が表示されます。Dockerイメージのサイズ、ビルド年月日、ビルド環境などが表示されます。このDockerイメージからコンテナを起動するには、「Create」をクリックします。

コンテナ名、ホスト名、割り当てるメモリ容量などを入力することができます。今回は、CentOS 5.11を起動し、dateコマンドを実行し、日付を出力するコンテナを起動してみます。Docker起動時にdateコマンドを実行するには、「ENTRYPOINT:」の欄に「date」を入力します。今回は、コンテナ名をtest0001とします。必要な項目を入力したら、ウィンドウの下部にある「Create」をクリックします。

これで、コンテナtest0001が生成されました。生成されたコンテナtest0001に関する各種情報が表示されます。

dateコマンドの結果が出力されたかどうかを確認するには、同ページ内の下部にある「stdout/stderr」をクリックします。すると、標準出力と標準エラー出力の結果が表示される画面になります。今回は、dateコマンドを実行するDockerコンテナですので、STDOUTの欄に時刻が表示されています。

DockerUIではコンテナの起動、停止、再起動、kill、一時停止、一時停止の解除、削除などの操作も可能です。

Docker Swarmによるクラスター環境を見据えた管理ツール「Shipyard」

Shipyardは、Dockerの管理ツールとしても非常に有名で、Dockerイメージ、Dockerコンテナの管理はもちろん、DockerUIが提供していないユーザー認証やDockerコンテナへのコンソール接続などの機能があります。また、最新のShipyardでは、Docker Swarmがビルトインされており、Swarmクラスタにおける利用を念頭に開発が続いています。ただし、Shipyardは、改良が頻繁に行われており、メインバージョンが変わると、構築手順や設定の方法が大きく異なるため、Shipyard自体をバージョンアップする際には、注意が必要です。

Shipyardのインストール

以下では、Shipyardの最新版のインストール方法と基本的な管理方法を紹介します。Shipyardも、DockerUIと同様にDockerイメージが用意されているため、Docker環境があれば、簡単に利用することができます。以下は、すでにDocker環境がインストールされているCentOS 7.1上にShipyardをインストールする手順です。プロキシーサーバーを経由してインターネットに接続する場合は、プロキシーサーバーのための環境変数を事前に設定しておく必要があります。また、今回は、ファイヤウォールを無効にしておきます。

# export http_proxy=http://プロキシーサーバーのFQDN:8080
# export https_proxy=http://プロキシーサーバーのFQDN:8080
# systemctl stop firewalld

Shipyardプロジェクトが提供するDockerイメージを入手します。

# curl -s https://shipyard-project.com/deploy | bash -s
...
...
Waiting for Shipyard on 16.147.201.22:8080
............
Shipyard available at http://16.147.201.22:8080
Username][admin Password][shipyard

[注意]

上記のcurlコマンドによるインストール手順の最終段階では、Shipyardへの接続テストが自動的に行われます。もし接続テストが終了しない場合は、事前にホストOSのファイヤウォールの設定に不備がある可能性があります。具体的には、8080番ポート、2375番ポートを公開する必要があります。

正常にインストールが終了すると、以下のDockerコンテナが起動しているはずです。

# docker ps -a
CONTAINER ID  IMAGE                 ...  COMMAND                ... PORTS                           NAMES
dc97b9563a1a  shipyard/shipyard     ...  "/bin/controller serv" ... 0.0.0.0:8080->8080/tcp          shipyard-controller
2e89ac8e3953  swarm:latest               "/swarm m --host tcp:" ... 2375/tcp                        shipyard-swarm
11eb4b793a06  ehazlett/docker-proxy ...  "/usr/local/bin/run"   ... 2375/tcp                        shipyard-proxy
d225f3755096  alpine                     "sh"                   ...                                 shipyard-certs
41ffe0e5e185  rethinkdb                  "rethinkdb --bind all" ... 8080/tcp, 28015/tcp, 29015/tcp  shipyard-rethinkdb

以上で、Shipyardのインストールが完了しました。

Shipyardによる管理

Shipyardにアクセスするには、WebブラウザでShipyardのDockerコンテナが稼働するホストOSのIPアドレス、または、FQDNに8080番ポートを指定します。FQDNで指定する場合は、/etc/hostsあるは、DNSサーバーによる名前解決が必要です。

http://ShipyardのDockerコンテナが稼働するホストOSのFQDN:8080

ShipyardのWeb管理画面にアクセスすると、ログイン画面が表示されます。ユーザー名は、admin、パスワードは、shipyardでログインできます。

Shipyardにログインすると、現在稼働しているDockerコンテナなどの情報が一覧表示されます。

以下では、Shipyardの管理GUIを使って、Dockerコンテナの起動、そして、コンソールへの接続を行いDockerコンテナのOSのバージョンを確認し、さらにコンテナの負荷状況を確認するまでの手順を紹介します。まず、事前にShipyardが管理するためのDockerイメージを入手します。今回は、ShipyardのDockerコンテナが稼働するホストOSに、CentOS 6.7のDockerイメージを事前にpullしておきます。

# docker pull centos:centos6.7

Shipyardの管理画面上部の「IMAGES」をクリックすると、Shipyardの管理下に置かれているDockerイメージ一覧が表示されますので、先程入手したCentOS 6.7のDockerイメージが登録されているかを確認します。

次に、Shipyardの管理画面上部の「CONTAINERS」をクリックし、コンテナ一覧を表示し、「Deploy Container」をクリックします。今回は、「Image Name」に「centos:centos6.7」、コマンドに「/bin/bash」、ホスト名に「test0001」、ドメイン名に「jpn.linux.hpe.com」、コンテナ名に「test0001」を入力し、画面下部の「Deploy」をクリックします。

再び、Shipyardの管理画面で「CONTAINERS」をクリックし、コンテナ一覧を表示します。画面右の「Actions」から、スパナのアイコンをクリックし、「Console」をクリックします。

画面上の「Run」をクリックすると、コンテナtest0001のコンソールが表示されます。コンソールで、キーボードから「cat /etc/redhat-release」を入力し、OSのバージョンがCentOS 6.7かどうかを確認してください。

Shipyardの「CONTAINERS」からコンテナtest0001の画面右の「Actions」にある虫眼鏡のアイコンをクリックすると、コンテナtest0001に関する情報が得られます。

「Status」をクリックすると、CPU、メモリ、ネットワークの負荷状況をリアルタイムで監視することができます。

日本ヒューレット・パッカード株式会社 プリセールス統括本部 ソリューションセンター OSS・Linux担当 シニアITスペシャリスト

兵庫県伊丹市出身。1996年頃からオープンソースに携わる。2000年よりUNIXサーバーのSE及びスーパーコンピューターの並列計算プログラミング講師を担当。科学技術計算サーバーのSI経験も持つ。2005年、大手製造業向けLinuxサーバー提案で日本HP社長賞受賞。2006年、米国HPからLinux技術の伝道師に与えられる「OpenSource and Linux Ambassador Hall of Fame」を2年連続受賞。日本HPプリセールスMVPを4度受賞。現在は、Linux、FreeBSD、Hadoop等のOSSを駆使したスケールアウト型サーバー基盤のプリセールスSE、技術検証、技術文書執筆を担当。日本HPのオープンソース・Linuxテクノロジーエバンジェリストとして講演活動も行っている。Red Hat Certified Engineer、Red Hat Certified Virtualization Administrator、Novell Certified Linux Professional、EXIN Cloud Computing Foundation Certificate、HP Accredited Systems Engineer Cloud Architect、Red Hat Certified System Administrator in Red Hat OpenStack、Cloudera Certified Administrator for Apache Hadoop認定技術者。HP公式ブログ執筆者。趣味はレーシングカートとビリヤード

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています