こんにちは。日本ヒューレットパッカードのオープンソース、Linuxテクノロジーエバンジェリストの古賀政純です。前回 は、Dockerfileのメリットについて、その概要を簡単にご紹介しました。今回は、Dockerfileを使った「インフラストラクチャ・アズ・コード」の非常に簡単な具体例と、その効果についてご紹介します。

ここでは、非常に簡素なDockerfileを例に、具体的な構築手順のコード化を見てみましょう。コードといってもあまり複雑な文法ではありません。非常に単純な例で、図をできるだけ入れて解説しますので、安心しください。今回は、下図に示す4行からなる非常に簡素なDockerfileの例で解説します。



構築手順のコード化を実現するDockerfileの例 構築手順のコード化を実現するDockerfileの例

このDockerfileは、Docker基盤を実現したい環境で作成します。普通のテキストエディタで編集して作成します。記述が終わったら、Dockerfileという名前で保存しておくのが一般的です。まず、Dockerfileの1行目に「FROM」と書かれた行があります。これは、雛形となるDockerイメージの入手を意味します。

一般に、Dockerを導入する場合、インターネット経由で、Dockerイメージを入手することが少なくありません。この例では、無償のLinux OSである「CentOS」のバージョン6.8に相当する「OS環境の雛形のDockerイメージ」を入手するという意味になります。OS環境の雛形とは、必要最低限のOS環境をコンテナとして稼働させるためのDockerイメージであり、Dockerコミュニティが公開し、誰もが無償で入手して利用できるようになっています。

ここで重要なのが、CentOS 6.8というOS自体をインストールする導入手順書が不要であるという点です。

Docker以前のハイパーバイザ型の仮想化環境であれば、OSの導入といえば、インストーラの操作方法などを記載した手順書に基づいて人間がディスプレイを見ながら、キーボードやマウス操作でOSをインストールしていました。

しかし、Dockerでは、コンテナとして稼働するOS環境は、雛形のDockerイメージとして容易に入手することが可能であるため、「OSのインストール手順」そのものが不要なのです。今回、利用するDockerイメージは、「centos:6.8」という名前が指定されており、これにより、CentOSのバージョン6.8の環境と同等のOS環境を実現するDockerイメージが手元のマシンに保存されます。

これにより、いったんDockerイメージを入手すれば、CentOS 6.8のDockerコンテナをいつでも素早く起動させることができる、つまり、ユーザーは、すぐにCentOS 6.8のOS環境を軽量なコンテナ環境ですぐに利用できます。

ちなみに、Dockerコミュニティが提供しているDockerイメージ（この例では、CentOS 6.8というOS環境の雛形のイメージ）を入手する以外にも、インターネットに接続しない環境でOS環境の雛形となるDockerイメージを社内で独自に作成することも可能です。セキュリティ上、インターネット上にアップロードされたコミュニティの成果物（Dockerイメージ）を利用できない場合は、社内にDockerイメージの保管庫（Dockerレジストリといいます）を作成しておき、そこからOS環境の雛形のイメージを入手するといった運用も可能です。