最後にドッカーコンテナは何ですか?

ドッキングウィンドウは、アプリケーションコンテナエンジンのオープンソースであり、近年で最もホットな技術の一つであり、ドッキングウィンドウに変更が豊富な会社のロゴを取得するためのオープンソースプロジェクトからのドッキングウィンドウドッキングウィンドウの会社の後、ドッキングウィンドウ-コンを統合するために、良いの見通しを、プロジェクトのフィットを取得しかし、にもかかわらず市場に大きな損失をドッカーをしましょう、しかし、ドッカーの将来の見通しが良いだろうと信じて、K8Sものの、ドッカーは、右のコミュニティに強すぎる話す、気分を害した多くの企業は、Googleとrethubと言わや他の共催kubernetesプロジェクト主流の容器コードドッカーさんのパワフルなだけでなく、使用、唯一のより良いです。

ドッカーコンテナがドッキングウィンドウrunコマンドを使用して、非常に簡単な方法を作成します。

docker run -it busybox /bin/sh

-itコンテナを起動した後ドッカープロジェクトを伝え、我々は相互作用し、このドッカーコンテナできるように、標準入力コンテナに関連付けられた、TTYあるテキスト入力、出力環境を、割り当てる必要があります。

/ビン/ shが、我々はドッカーコンテナで実行するプログラムです。

したがって、この命令変換の一番上にある:助けてください私は、コンテナ、コンテナ内の/ binに/ SHの実装、コンテナを起動して、私と一緒に、コマンドラインターミナルの相互作用を割り当てます。

これに先立ち、私たちはホストの存在のプロセスを見てみましょう。

image.png

PIDは、我々はPIDが4988であるbashのは、これに基づいて、4987のためにsudoの下で現在の管理者を参照して、bashのpsコマンドを実行することができ、PIDおよびPPIDの関係は明らかです。

この時点では、ドッキングウィンドウコンテナを実行します。

処理容器内の容器の観点から、PSのうち、それが唯一のPID /ビン/ SH処理1です。

image.png

プロセス情報に戻って私たちのホストからチェックし、唯一のshのプロセスsudoのは、bashとPSを除外し、コンテナ/ binに/ shのコンテナと接触することができる、あなたは彼のプロセスPIDが7355で見ることができ、親プロセスそれは7332です。

image.png

7332は、このプロセスのPPIDを見つけ、あなたはcontainerd-シムと呼ばれるプロセスは、コンテナを作成知ることができます。

image.png

物事のcontainerd-シムプロセスと見なされていない、あなたは、コンテナが何であるかに気づいているはず、実際には、「特別な」プロセスです。

特別な?

私たちは、ホストpsのは、Linuxは特別な意味を持っているにPIDが1である、プロセスは、コンテナプロセスを参照してください、とだけ自分の容器、PID 1でプロセスを見ることができる容器にpsコマンドを使用することができます表示します。

プロセス0 PIDがアイドルプロセスが最初のユーザー・プロセスを作成し、カーネルモードで実行し、システムによって自動的に作成され、初期化プロセスはPID 1で、initプロセスは、他のLinuxシステムの祖先であるすべてのユーザー・プロセスを処理し、主な役割は、ゾンビプロセスに対処するためです。

親が早い子よりも死ぬとき、親は、一般的には「父のプロセス」を探して再子プロセスを与えることはinitプロセスで、initプロセスは子プロセスの終焉を処理する責任を負っています。

コンテナ内のプロセスが実際にPID 1とプロセスであり、彼はターザン彼が見ることができた生と死のプロセスを管理し、ホストプロセスの外を見ていない、目隠し、しかしすることはできません。

この時、最も適切なドッカー商標絵の紹介。

image.png

コンテナとして知られているクジラのコンテナの裏、完全に閉じられ、我々はそれを見ることができるが、それには私たちは知りません。

これは、ドッカー容器蓋の技術です。

このプロセスは、プロセスの新しいプロセス空間、スペースを作成する「を参照してください」になるので、彼が実際に達成するのは非常に簡単です、Linuxのプロセス作成機能クローン、パラメータCLONE_NEWPIDを受け入れることができ、そのPIDは1です。これは単なる「カバーアップ」は、このプロセスの実際のホストプロセス空間、PIDまたは実際の値であるため、「見る」と言います。

int pid = clone(main_function, stack_size, CLONE_NEWPID | SIGCHLD, NULL);

この技術は、ネームスペースと呼ばれ、上記言うPID名前空間には、もちろん、Linuxはまた、マウント、UTS、IPC、ネットワークやユーザーなど、他のものの名前空間を持つことができています。

マウント名前空間は、ポイント情報、マウントのプロセスは、現在の名前空間を見ることができるように、単離することができる
ネットワーク機器及び構成で現在の名前空間を参照するために分離プロセスを作るために使用されるネットワークの名前空間を、。

実際には、要約すると、それは名前空間が作成された特殊なプロセスパラメータを持つコンテナで見つけることができます。

これは、最初のすべてのコンテナの同じホスト・オペレーティング・システム・カーネルを共有している、いくつかの質問を公開し、第二は、私たちがLinuxのバージョンコンテナの高低いバージョンを使用する場合は、問題があるでしょうが、またということです第三は、この名前空間は、完全に孤立仮想化技術としてではなかった単離することです。

Linuxは、実際に、あなたはコールのシステム時刻を変更するための容器を使用しようと多くのリソースは、時間など、単独で行うことはできませんがあり、時間がホストマシンに影響を与えます。

だから、ドッカーコンテナが、それは未知の危険性が存在し、まだです。

コンテナがinitプロセスPID 1を感じるが、私たちのホストのために、彼はシステムリソースを競合するように、他のプロセスの通常のプロセスである、と。

このため、新機能のLinuxカーネルの誕生、Linuxののcgroupは、あなたはプロセスのリソース制限の指標を設定することができます。

Linuxのコントロールグループは、CPU、メモリ、ディスク、ネットワークの帯域幅など、使用可能なプロセスグループを、資源上限を制限することで、というように。

cgroupの使用インタフェースは、開いているファイルシステムの使用である、あなたは、このディレクトリにリソースという名前のファイルをたくさん見つけることができます。

image.png

image.png

あなたは、コンテナを作成するとき、次のようにあなたは、リソース割り当てのためのパラメータを指定することができます。

docker run -it --cpu-period=100000 --cpu-quota=20000 busybox /bin/sh

あなたが実行し、コンテナこのコマンドを使用して作成した後、コンテナIDの実行がf0c0f3e5d0d2で見ることができます。

image.png

image.png

この時点で、あなたはf0c0f3e5d0d2その中で、ドッキングウィンドウのcgroup内を検索するために、SYS / FS /ディレクトリの前にディレクトリの先頭を言うことができます。

image.png

ドッカーコンテナにリソースを割り当てるために、のcgroupに利用できるリソース割り当てパラメータ、f0c0f3e5d0d2このディレクトリコンテナで見つけることができます。

image.png

そこコンテナ自体に重要な場所は、ファイルシステムであり、そしてもちろんのPID名前空間のマウント名前空間の使用は、ファイルシステムの別々のスペースに独立の外に、実現されています。

それはそうですが、しかし、あなたはマウント名前空間が独立したスペースを作成するときに、詳細を知っている必要があります一つのことは、ホストがその再マウントのすべてのノードへの必要性を作成した後、スペース自体をマウント継承します。

ここでは詳細には、非常に詳細な、このブログマウスの左耳を見ることができます。

https://coolshell.cn/articles/17010.html

おすすめ

転載: www.cnblogs.com/LexMoon/p/docker1.html