
Dockerコンテナの世界に足を踏み入れたことがあるなら、おそらく独自のイメージを作成し始め、それをDocker Hubにプッシュして他の人に使ってもらいたいと考えているのではないでしょうか。もしそうなら、幸運です。そのプロセスを丁寧に解説します。ここでは、新しいDockerイメージを作成し、それをDocker Hubにプッシュする方法を、すべてコマンドラインから実行します。
このプロセスは難しくありませんが、dockerコマンドの使い方を知っておく必要があります。Ubuntu 16.04 Serverでデモを行いますが、手順はdockerがインストールされているLinuxディストリビューションであればどれでも実行できます。dockerが既にインストールされており、Docker Hubのアカウントをお持ちであることを前提としています。
それでは、仕事に取り掛かりましょう。
新しいイメージを作成する
簡潔にするために、最新のUbuntuイメージをベースに、LAMPサーバーを含む新しいイメージを作成します。既に同様のイメージは数多く存在しますが、ここでは簡単な例としてご紹介します。
最初に、次のコマンドで最新の Ubuntu イメージを取得します。
docker pull ubuntu
上記のコマンドは最新のUbuntuイメージをダウンロードします。次に、最新のUbuntu内で作業できるようにコンテナを作成します。これを行うには、次のコマンドを実行します。
docker run --name test-lamp-server -it ubuntu:latest bash
上記のコマンドでは、好きな名前を使用できます。ここでは、作業内容を正確に把握するために、test-lamp-server という名前を使用しています。上記のコマンドが完了すると、ターミナルの表示が変わり、コンテナ内で作業していることが分かります。
コンテナ内に入ったら、まず次のコマンドで apt を更新する必要があります。
apt-get update
上記のコマンドを実行しないと、コンテナに何もインストールできません。更新が完了したら、次のコマンドを実行してください。
apt-get install lamp-server^
上記のコマンドを実行すると、LAMPサーバーに必要なものがすべてインストールされます。インストールプロセス中に、MySQLの「root」ユーザーのパスワードの作成(および確認)を求められます(図A)。
図A

インストールが完了したら、exitコマンドでコンテナを終了してください。docker ps -aコマンドを実行すると、新しいコンテナがリストに表示されます。
コンテナをDocker Hubにプッシュする
いよいよ、新しいコンテナをDocker Hubにプッシュします。これはあくまでテストコンテナなので、実際にこのコンテナをHubにプッシュする必要性は低いでしょう。とりあえずプッシュしてみましょう(やり方がわかるように)。まずは、以下のコマンドで変更をコミットする必要があります。
docker commit -m "Added LAMP Server" -a "NAME" test-lamp-server USER/test-lamp-server:latest
ここで、NAME はあなたのフルネーム、USER は Docker Hub のユーザー名です。
次に、次のコマンドで Docker Hub にログインする必要があります。
docker login
Dockerのログイン認証情報の入力を求められます。認証に成功すると、「Login Succeeded」と表示されます。最後に、以下のコマンドでイメージをDocker Hubにプッシュできます。
docker push USER/test-lamp-server
USER は Docker Hub のユーザー名です。イメージは Docker Hub にアップロードされ、準備完了です。これで、どこからでもそのイメージを Docker Hub にプルできます(Docker がインストールされていれば)。Web ブラウザを開いて Docker Hub にログインすると、イメージが一覧に表示されます。
コンテナを開発する
ここまでくれば、コンテナの開発とDocker Hubへのプッシュを始める準備が整っているはずです。ここでは非常に基本的なイメージしか作成していませんが、開発者としてのスキル(そして新しく習得したDockerスキル)をすべて駆使して、あなた自身、同僚、そしてコミュニティ全体に役立つ、多種多様なイメージを作成できます。