Dockerを開発環境で使う場合は、「継続的インテグレーション(CI)に組み込む」「開発に必要なソフトウエアの配布」といった活用方法がある。使い捨てが簡単にできる、必要なミドルウエアやライブラリも含めてパッケージ化できるという、コンテナーの特性が生きる利用方法といえる。

IIJ
毎回クリーンな環境でビルド

 DockerをCIに組み込んで使う例として、ここではIIJの活用方法を見ていこう。IIJでは、2014年2月頃からCIツール「drone.io」(以下、drone)とDockerを組み合わせ、開発したプログラムのビルドおよびテストを行っている(図1)。ビルドとテストの実行時には毎回新規にコンテナーを立ち上げ、終了したらコンテナーを消去する。このようにコンテナーを使い捨てにすることで、毎回クリーンな環境でビルドおよびテストができる。

図1●IIJは継続的インテグレーションサーバーと組み合わせて利用
図1●IIJは継続的インテグレーションサーバーと組み合わせて利用
開発者がソースコードをGitHubに登録すると、継続的インテグレーション(CI)サーバーのdrone.ioがDockerのコンテナーを立ち上げ、ビルドとテストを自動実行する
[画像のクリックで拡大表示]

 処理の流れは次のようになる。開発者はまず、ソースコードをバージョン管理ツールである「GitHub Enterprise」に登録する。GitHub Enterpriseは登録があったことをdroneに通知し、ソースコードのクローンを作成する。するとdroneは、Dockerのコンテナーを立ち上げ、コンテナー内でビルドおよびテストを実行する。終了後は、GitHub Enterpriseと社内のチャットサーバーにテスト結果を通知する。

 さらに、デプロイを自動化する仕組みも整えてある。droneはテスト後にrpmパッケージ(自動インストール用のアーカイブファイル)を生成し、社内リポジトリーに送信する。これをリソース管理やサーバー構築を自動化するツール「serf」に通知。同社ではまだ本格的に活用していないが、serfによって、複数のサーバーにrpmパッケージをインストールできるようになる。Dockerコンテナーはserfへの通知を終えたら毎回消去する。

この先は日経クロステック Active会員の登録が必要です

日経クロステック Activeは、IT/製造/建設各分野にかかわる企業向け製品・サービスについて、選択や導入を支援する情報サイトです。製品・サービス情報、導入事例などのコンテンツを多数掲載しています。初めてご覧になる際には、会員登録(無料)をお願いいたします。