どうすればDockerの独自のベースイメージを作成できますか?


97

Dockerドキュメントによると、独自のイメージを構築するには、常に、FROM命令。

明らかに、Dockerインデックスには多数の画像から選択できますが、独自の画像を作成したい場合はどうなりますか?それは可能ですか?

base私が正しく理解していれば、イメージはUbuntuからビルドされており、Debianイメージで実験したいと思います。さらに、Dockerがどのように機能するかを本当に理解したいのですが、base画像はまだブラックボックスです。


編集: ベースイメージの作成に関する公式ドキュメント


関係ありません。:-)ここでの質問は、サイトのガイドラインに従って、トピックに関連している必要があります。これらは、上カバーされているヘルプセンターツアーページ。(そこにあるリンクはDockerコンテナーの開発者にも関係しているようです。)自分のコンテナーイメージについて質問している場合は、サイトにその
Ken White

@KenWhite:関連するメタ質問:meta.stackexchange.com/questions/179249/...
Flimm

:-) この時点での関連するメタ答え。これはあなたの真上の答えです。(特に、あなたの質問が何を求めているのかについての明確さについて、私がリンクした回答の2番目のコメントを参照してください。)
ケンホワイト

9
@ケンホワイト:問題は、「イメージ」をデプロイする方法ではなく、ベースイメージを「作成」する方法です。Flimmは、彼または他の人が後で展開できる何かをプログラムしようとしています。Amazon EC2はデプロイに関連していますが、プログラマー向けのプログラミングを行っているプログラマーがまだ2人いると思います:)。ベースイメージを作成することは、私が言うプログラム的なものの例です。
qkrijger 2013

@qkrijger:これはリンクされたメタ質問で議論されています。その議論は開かれているので、そこに話題性についての議論を投稿してください(合意が「プログラム的なもの」の話題ではないように思われる場合)。
ケンホワイト

回答:



32

ソロモンハイクスの引用:

「docker import」を使用すると、任意のtarballから新しいコンテナーを簡単に作成できます。例えば:

debootstrap raring ./rootfs
tar -C ./rootfs -c . | docker import - flimm/mybase

おそらく、編集/更新をコメントで投稿して、他の人がそれを見ることができるようにし、おそらく誰かが編集を再送信できるようにします。
Bdoserror 2013年

1
@Flimmこの場合、なぜsudoを使用する必要があるのですか?これらのコマンドをユーザーディレクトリで実行すると、特権の昇格の理由がなくなります。インストールではなく、イメージを作成しています。
rancidfishbreath 14年

通常のDockerを使用するためにrootも必要ありません。自分をdockerグループに追加するだけです。
tekknolagi 2014年

1
しかし、Flimmが推奨するインポートコマンドのハイフンが必要です。docker import - flimm/mybase代わりにdocker import flimm/mybase
Daniel Alder

tar内のファイルの所有権は、rootとして実行しているかどうかに影響されます。そうでない場合は、rootとして、その後、debootstrapおよびtar少なくとも下で実行する必要がありますfakeroot
2016

21

(fatherlinuxにクレジット)から情報を取得しますhttp://developerblog.redhat.com/2014/05/15/practical-introduction-to-docker-containers/良く説明し、

  1. ファイルシステムのtarファイルを作成します。

    tar --numeric-owner --exclude=/proc --exclude=/sys -cvf centos6-base.tar /
    
  2. ローカルにインストールされてimportいない場合は、tarファイルを他のdockerシステムに転送します。

    cat centos6-base.tar | docker import - centos6-base
    
  3. これで、実行して確認できます。

    docker run -i -t centos6-base cat /etc/redhat-release
    

dotcloudスクリプト は最初の2つのステップを組み合わせており、混乱を招き、最初は複雑に見えます。

ドッキングウィンドウの公式ガイドライン使用debootstrapもクリーンなファイルシステムを作ろうとしています。

手順1の方法は自分で判断できます。


14

独自のイメージを最初から作成するには、scratchイメージを使用できます。

スクラッチの「イメージ」を使用すると、Dockerfileの次のコマンドをイメージの最初のファイルシステムレイヤーにするビルドプロセスに通知されます。

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

http://docs.docker.com/engine/articles/baseimages/#creating-a-simple-base-image-using-scratch


1
これに加えimportて、tarファイルから、2つの正規の回答があり、そのリンクが正規リソースです。
2016

7

独自のベースイメージを作成する場合は、最初に 公式イメージ、特にstackbrewそのリポジトリ内を確認します。

それ以外の場合は、dockerリポジトリに最小限のOSイメージに関するいくつかの優れたリファレンスがあります自体にます。

たとえば、ここに最小限のアーチイメージを作成するためのスクリプトがあり、さらにここにあります

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.