2017-03-22 6 views
3

私は通常、ubuntu、arch linuxイメージを使用していますが、最近、ドッキング用のコンテナ用のcoreOSというOSがあることがわかりました。私がドッカーには慣れていないので、私はドッカーファイルを構築するための最良のベースイメージがどれであるかわかりません。それは愚かな質問のように思えますが、私はいくつかのコンテナで多くのマイクロサービスを実行する場合、コンテナはできるだけ軽くする必要があります。ドッカーファイルの作成に使用できる最も軽量なベースイメージは何ですか?

答えて

5

これは本当にあなたの要件に応じて異なります。

  1. FROM scratch:あなたが静的にアプリケーションをコンパイルすることができ、他のバイナリ(ライブラリ、シェル、または他のコマンド期間)を必要としない場合には、あなたは完全に空の "スクラッチ"を使用しています。これは、他のベースイメージの開始点として使用されています。また、あらかじめコンパイルされた多くのGoコマンドにも含まれています。

  2. Busybox:この基本イメージと便利なユーティリティコンテナのほうが少ないと考えています。あなたは非常に小さなサイズで多くの一般的なコマンドを取得します。しかし、あなたが得られないものは、一般的なパッケージマネージャーが他のコンポーネントを簡単にインストールすることです。現在のサイズは1Mです。

  3. アルパイン:これは合理化されたイメージを取っています。それは良い仕事をしていて、小さくても、あなたにパッケージマネージャーを与えます。小さなサイズにはコストがかかりますが、glibcのようなものは含まれていません。公式画像の多くはアルパインに基づいていることがわかります。したがって、コンテナの生態系内では、これは非常に一般的な選択肢です。パッケージの追加を開始する前の現在のサイズは約2Mです。

  4. Debian、Ubuntu、およびCentOS:これは軽量のベースイメージではなく、それぞれ約50Mで提供されます。しかし、彼らはあなたが引き出すことができるパッケージの大量のコレクションと、テストしている、バグを修正し、上流に物事に貢献している多くの人々と一緒に得られるサイズで失うもの。彼らはまた、いくつかのアプリケーションがプリインストールされることを期待するかもしれないライブラリのコレクションを持っています。

その最後のオプションは少し大きくなるが、基本イメージのみワイヤ上に押されると、一度ディスクに保存されている必要があることを心に留めておきます。その後、それらを変更しない限り、それらの上に構築されたイメージは、そのベースイメージ内のレイヤーを参照するマニフェストを送信するだけで済みます。ドッカーエンジンは、それらのレイヤーが既にダウンロードされていることを確認します。ユニオンfsでは、100個のコンテナをすべて実行してそのイメージを指していても、それらのレイヤーをコピーする必要はありません。ディスクのすべてのイメージレイヤーに対して同じ読み取り専用レイヤーを使用し、そのコンテナに変更を書き込みます特定のRWレイヤー。

+0

多分、tianon/true/image(合計125バイト)について話し、データのみのコンテナはあなたの説明を改善するのに良いです。 –

+0

私はデータ専用容器が好きではありません。それらはコンテナとデータの管理を混在させ、コンテナのクリーニング時にデータが失われる危険性があり、名前付きボリュームに置き換えられました。 – BMitch

0

試してみてください。alpine linuxベースイメージは、実際には小さく(5M)、パッケージリポジトリにアクセスできます。本番環境でJDKベースイメージを構築するためにこれを使用していますが、これまでのところうまく動作しています。

関連する問題