Dockerイメージへの変更をコミットする方法 - TechRepublic

Dockerイメージへの変更をコミットする方法 - TechRepublic

企業が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コンテナを使った開発は格段に簡単になります。

Tagged: