
企業がDockerコンテナを活用する方法の一つは、コンテナ用のテンプレートイメージを作成することです。例えば、開発目的でコンテナを使用しており、デプロイされたすべてのコンテナが最初から同じ基本ツールで起動するようにしたいとします。イメージをダウンロードし、コンテナを実行し、ニーズに合わせてコンテナを修正してから、そのコンテナを使って開発を開始できます。しかし、同じコンテナをデプロイするたびに、同じプロセスを繰り返す必要があります。
あるいは、イメージをプルダウンし、コンテナを実行し、開発者の基本的なニーズに合わせてコンテナを修正し、その変更を新しいイメージにコミットすることもできます。開発者は、修正されたイメージに基づいて新しいコンテナを実行するだけで、準備完了です。ニーズに合わせて元のイメージを修正する必要はありません。
もしこのプロセスを活用したいと思ったら、ラッキーです。実に簡単です。例えば、NGINXの最新版をベースに、PHP、build-essential、nanoがインストールされたイメージが必要だとします。イメージのプル、コンテナの実行、コンテナへのアクセス、ソフトウェアの追加、そして変更を新しいイメージにコミットするプロセスを解説します。この新しいイメージは、開発コンテナのベースとして簡単に使用できます。
イメージをプルしてコンテナを実行する
最初のステップは、最新のNGINXイメージを取得することです。これは以下のコマンドで実行できます。
sudo docker pull nginx
イメージがダウンロードされたら、次のようにターミナル ウィンドウを使用できるように実行します。
sudo docker run --name nginx-template-base -p 8080:80 -e TERM=xterm -d nginx
テンプレートのベースとなるため、これに nginx-template-base という名前を付けました。
コンテナへのアクセスと変更
次にコンテナにアクセスする必要があります。docker runコマンドを実行すると、長いID番号が表示されます。イメージにアクセスするにはこの番号が必要です。以下のコマンドを実行してください。
sudo docker exec -it CONTAINER_ID bash
ここで、CONTAINER_ID は、実行コマンドを実行したときに表示された ID です。
このコマンドを実行すると、実行中のコンテナのターミナルが表示されます。次に、テンプレートに必要なソフトウェアを追加しましょう。そのためには、以下のコマンドを実行します。
apt-get install nano
âapt-get install build-essential
âapt-get install php5
注意: 公式の NGINX イメージの場合、リポジトリを追加しないと PHP 7 をインストールできません。
コンテナを終了して変更をコミットする
コンテナに変更を加えたので、変更をコミットする必要があります。まずはexitコマンドでコンテナを終了します。変更をコミットし、変更内容に基づいた新しいイメージを作成するには、以下のコマンドを実行します。
sudo docker commit CONTAINER_ID nginx-template
ここで、CONTAINER_ID は、コンテナを最初に実行したときに付与された ID です。
docker images コマンドを実行すると、新しいコンテナが表示されます (図 B )。
図B

この時点で、新しいイメージを使用して新しいコンテナを起動でき、すべての変更が既に適用されています。新しいコンテナを実行する際のコマンドは以下のようになります。
sudo docker run --name nginx-dev -p 8080:80 -e TERM=xterm -d nginx-template
この新しく実行中のコンテナにアクセスすると ( sudo docker execコマンドを使用)、すべての変更が適用され、使用できる状態になっていることがわかります。
コンテナテンプレートへの簡単なルート
Dockerコンテナの作業を少しでも効率化したいとお考えなら、このツールがまさにその答えとなるはずです。テンプレートイメージの作成に慣れれば、Dockerコンテナを使った開発は格段に簡単になります。