2017-11-19 10 views
1

私はドッカーには新しく、私はドキュメントで最初のhello worldの例を試していました。私が理解しているように、こんにちは世界のイメージはスクラッチイメージの上に基づいています。誰かがスクラッチイメージの仕組みを説明できますか?私が理解するように、それは本質的に空白です。こんにちは、世界の画像でバイナリはどのように実行されますか?あなたがここにソースを見ればドッカーのスクラッチ画像とは何ですか?

答えて

1

それは実際には、空白ではないのですが、それだけではDebianの非常に最小限のバージョンを使用しています、それはそれはdebian:stretch-slim

https://github.com/docker-library/hello-world/blob/master/Dockerfile.build#L2

編集に引っ張っていますを示しています。

ありドッカーハブのスクラッチイメージですが、ベースイメージを作成するための基本的なキャンバスですが、OSをセットアップしてから新しいイメージを作成するまでは本質的に役に立たないものです。あなた自身のオペレーティングシステムを書いていないかぎり、あなたはそれを使う必要はないでしょう。既存のプラットフォームはすべて、すでに何らかの形で存在しています。

1

scratch画像はDockerの中で最も小さい画像です。これは他のすべての画像の基本祖先です。 scratchイメージは実際には空です。フォルダ/ファイルが含まれていません...

scratch画像は他のベース画像を構築するために使用されます。例えば、debian画像は、次のようなゼロから構築されています:

FROM scratch 
ADD rootfs.tar.xz/
CMD ["bash"] 

rootfs.tar.xz

は、すべてのファイルシステムのファイルが含まれています。 Debianイメージはファイルシステムフォルダをスクラッチイメージに追加します。これは空です。

私はそれが本質的に空白であると理解しています。どのようにしてバイナリが で実行されるのですか?

スクラッチイメージは空白です。スクラッチイメージに追加されたhello-world実行可能ファイルは実際には静的にコンパイルされています。つまり、自己完結型で実行するために追加のライブラリは必要ありません。 offical docker docsで述べたよう

:あなたがドッカー GitHubの例C-ソースコードから「ハロー」の実行例を構築し仮定

、あなたが-static フラグとそれをコンパイルし、その後、缶ドッカーのビルド - タグ hello

これは、hello-world実行可能ファイルが静的にコンパイルされていることを確認します。静的コンパイルの詳細については、hereを参照してください。

関連する問題