ベース・イメージの作成

自分自分で ベース・イメージ を作りたいですか? 素晴らしいです!

パッケージ化の対象により、Linux ディストリビューションによっては、重度に依存する手順を踏みます。以下の例では、皆さんが新しいイメージのコントリビュート(貢献)にあたり、プル・リクエストを送信するのを勇気づけるでしょう。

イメージ全体を tar で作成

一般に、皆さんが作業で使っているマシン上で動作しているディストリビューションを使い、ベース・イメージのパッケージを作りたいと考えるでしょう。その場合、Debian の Debootstrap のようなツールを使えば、Ubuntu イメージを使わずに構築も可能です。

Ubuntu ベース・イメージの作成は、次のように簡単にできます。

$ sudo debootstrap raring raring > /dev/null
$ sudo tar -C raring -c . | docker import - raring
a29c15f1bf7a
$ docker run raring cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=13.04
DISTRIB_CODENAME=raring
DISTRIB_DESCRIPTION="Ubuntu 13.04"

Docker の GitHub リポジトリ上に、ベース・イメージ作成のためのサンプル・スクリプトがあります。

スクラッチからベース・イメージを作成

Docker が準備した最小イメージ scratch を、コンテナの構築開始点として使えます。 scratch “イメージ” が意味するのは、自分が Dockerfile 上のコマンドによって作成するイメージの、その最初のファイルシステム層にあたります。

scratch は Docker Hub 上のリポジトリからは見えません。そのため、取得(pull)や実行や、イメージを scratch という名前でタグ付けできません。そのかわり、Dockerfile で参照可能です。例えば、 scratch を使って最小コンテナを作成するには、次のようにします。

FROM scratch
ADD hello /
CMD ["/hello"]

これはチュートリアルで使用する hello-world イメージを作成する例です。テストしたい場合は、 イメージ・リポジトリ から複製できます。

更なる詳細について

多くの情報が Dockerfile を書くにあたり、手助けになるでしょう。