ベースイメージの作成

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

パッケージ化の対象により、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 を書くにあたり、手助けになるでしょう。

  • Dockerfile リファレンス・セクションには、 利用可能な命令の全ガイド があります。
  • 作成した Dockerfile を、より綺麗に、読みやすく、メンテナンスしやすいように、 ベスト・プラクティス・ガイド を書きました。
  • もし自分で新しい公式レポジトリを作成するのが目標であれば、Docker の 公式レポジトリについて をお読みください。