GNU/Linux >> Linux の 問題 >  >> Linux

Docker イメージ/コンテナの中身は?

画像を区別すると便利です およびコンテナ (ドキュメント)。 画像 静的であり、ディスク上にのみ存在します。 コンテナ 画像の実行中のインスタンスです また、独自のプロセス ツリーだけでなく、RAM やその他のランタイム リソースも含まれています。

画像 レイヤの論理グループと、コンテナを作成するときに何をすべきか、およびレイヤを組み立てる方法に関するメタデータです。そのメタデータの一部は、各レイヤーがその親の ID を認識していることです。

では、レイヤーには何が入りますか?親に追加したファイル (およびディレクトリ)。親から何かが削除されたことを示す特別なファイル (「ホワイトアウト」) もあります。

docker run の場合 画像、docker コンテナを作成します。すべてのレイヤーを正しい順序で解凍し、ホストとは別の新しい「ルート」ファイル システムを作成します。 docker また、イメージのメタデータを読み取り、イメージの作成時に指定された「エントリポイント」または「コマンド」を開始します。これにより、新しいプロセス サブツリーが開始されます。コンテナー内からは最初のプロセスがツリーのルートのように見えますが、ホストからはプロセスのサブツリーであることがわかります。

ルート ファイル システムは、ある Linux ディストリビューションを別のディストリビューションと区別するものです (カーネル モジュールの違いや、ブートローダー/ブート ファイル システムの違いもある可能性がありますが、これらは通常、実行中のプロセスからは見えません)。カーネルはホストと共有されており、実際にはコンテナー内で通常の役割を果たしています。ただし、ルート ファイル システムは異なるため、コンテナー内にいるときは、Docker イメージに含まれていたディストリビューションと同じように見えます。

コンテナーには、独自のファイル システムとプロセス ツリーがあるだけでなく、独自の論理ネットワーク インターフェイスと、オプションで RAM と CPU 時間の独自の割り当てがあります。ただし、オペレーターとしてコンテナーを制御しているため、ホストのネットワーク インターフェイスをコンテナーと共有し、RAM と CPU への無制限のアクセスを許可し、デバイス、ファイル、およびディレクトリをホストからコンテナーにマウントすることもできます。容器。デフォルトでは、物事を分離しておくことですが、必要なだけ分離モデルを破る力があります.


Docker は LXC Linux コンテナーのラッパーであり、そのドキュメントでは、何が共有され、何が共有されていないかを詳しく知ることができます。

一般に、ホスト マシンは、ファイル システムからプロセスなど、コンテナー内のすべてのものを認識/格納します。ホスト vm で ps コマンドを発行し、コンテナー内のプロセスを表示できます。

Docker コンテナーは VM ではないことに注意してください。したがって、実際にはすべてがホスト上でネイティブに実行され、ホスト カーネルを直接使用しています。各コンテナには独自のユーザー名前空間があります (古いルート刑務所に似ています)。コンテナが自身のプロセスのみを認識できるようにするツール/機能があり、ホスト ファイル システム上にレイヤー化された独自のファイル システムと、ホスト ネットワーク スタックにパイプするネットワーク スタックがあります。


Linux
  1. Dockerコンテナからカスタムイメージを作成する方法

  2. ホスト ポートを Docker コンテナに転送する

  3. プロセスが lxc/Docker 内で実行されているかどうかを判断する方法は?

  1. Dockerコンテナ内でプログラムを実行する方法は?

  2. docker は Linux コンテナー内で実行できますか?

  3. docker コンテナ内で cron ジョブを実行する方法

  1. 7つの楽しいLinuxコンテナ/画像転送機能

  2. Dockerイメージからファイルを抽出しますか?

  3. Dockerイメージに基づいてデプロイされたコンテナーを更新する