ベース・イメージの作成¶
自分自分で ベース・イメージ を作りたいですか? 素晴らしいです!
パッケージ化の対象により、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 リポジトリ上に、ベース・イメージ作成のためのサンプル・スクリプトがあります。
- BusyBox
- CentOS / Scientific Linux CERN (SLC) on Debian/Ubuntu or CentOS/RHEL/SLC/etc
- Debian / Ubuntu
スクラッチからベース・イメージを作成¶
Docker が準備した最小イメージ scratch
を、コンテナの構築開始点として使えます。 scratch
“イメージ” が意味するのは、自分が Dockerfile 上のコマンドによって作成するイメージの、その最初のファイルシステム層にあたります。
scratch
は Docker Hub 上のリポジトリからは見えません。そのため、取得(pull)や実行や、イメージを scratch
という名前でタグ付けできません。そのかわり、Dockerfile
で参照可能です。例えば、 scratch
を使って最小コンテナを作成するには、次のようにします。
FROM scratch
ADD hello /
CMD ["/hello"]
これはチュートリアルで使用する hello-world イメージを作成する例です。テストしたい場合は、 イメージ・リポジトリ から複製できます。
更なる詳細について¶
多くの情報が Dockerfile
を書くにあたり、手助けになるでしょう。
Dockerfile
リファレンス・セクションには、 利用可能な命令の全ガイド があります。- 作成した
Dockerfile
を、より綺麗に、読みやすく、メンテナンスしやすいように、 ベスト・プラクティス・ガイド を書きました。 - もし自分で新しい公式リポジトリを作成するのが目標であれば、Docker の 公式リポジトリについて をお読みください。
参考
- Create a base image
- https://docs.docker.com/engine/userguide/eng-image/baseimages/