5分でDockerの基本原理を学ぶ

5分でDockerの基本原理を学ぶ

[[378815]]

この記事はWeChat公式アカウント「妹の味」から転載したもので、著者は妹が飼っている犬です。記事を転載する場合は、ミスシスターテイスト公式アカウントまでご連絡ください。

あるクラスメートが私に次のような例え話をしてくれました。ホスト マシンは大きな家のようなもので、Docker はそれを N 個の小さなパーティションに分割します。これらの小さな仕切りの間には、独立したトイレ、小さなベッド、テレビなどがあります。

スズメは小さいですが、すべての器官を持っています。この比喩は非常に適切です。 Linux は非常に包括的な分離メカニズムを提供するため、各小さなコンパートメントは互いに影響を及ぼしません。隣の部屋が春に満ちていても、私の部屋は相変わらず閑散としていて、何の影響もありません。

Docker は、chroot、namespace、cgroup という 3 つの古いテクノロジーを利用することでこれらの機能を実現できます。この記事では、まず名前空間について説明します。結局のところ、分離はコンテナの最初の要素です。

Linux カーネルは最大 8 種類の名前空間を提供します。これらの独立した名前空間では、リソースは互いに影響を及ぼさず、分離対策は非常に優れています。

1. 8種類

まず、Linux がサポートする名前空間を見てみましょう。これらの詳細は、unshare コマンドを通じて確認できます。ターミナルで man unshare を実行すると、これらの名前空間の紹介が表示されます。

  1. マウント(mnt) マウントポイントを分離する
  2. プロセスID (pid) プロセスIDを分離する
  3. ネットワーク (net) ネットワークデバイス、ポート番号などを分離します。
  4. プロセス間通信(ipc)はSystem V IPCとPOSIXメッセージキューを分離します。
  5. UTS名前空間(uts)はホスト名とドメイン名を分離します
  6. ユーザー名前空間(ユーザー)はユーザーとユーザーグループを分離します

さらに、Linux ではバージョン 4.6 と 5.6 でそれぞれ cgroups と Time という 2 つの分離タイプが追加され、合計 8 つのタイプになりました。

  1. コントロール グループ (cgroup) 名前空間は Cgroup のルート ディレクトリを分離します (バージョン 4.6 で追加)
  2. 時間名前空間はシステム時間を分離します (バージョン 5.6 で追加)

2. 1 例

unshare コマンドを使用すると、いくつかの分離例をすばやく作成できます。最も単純で直感的な pid 名前空間を使用して、その効果を確認してみましょう。

ご存知のとおり、Linux プロセス番号 1 は systemd プロセスと呼ばれます。しかし、Docker では、ps コマンドを実行しても、プロセスのごく一部しか表示できません。

次のコマンドを実行して隔離環境に入り、bash をルート プロセスとして使用します。

  1. 共有解除--pid --fork --mount-proc /bin/bash  

効果は図に示されています。ご覧のとおり、bash はプロセス番号 1 になり、ホスト マシンやその他の分離された環境のプロセス情報はここには表示されません。

まず、隔離された環境で sleep 1000 を実行します。別のターミナルを開き、ホスト マシン上で pstree を実行すると、この分離された環境の進行状況情報が表示されます。

次に、ホストマシン上で、sleep に対応するプロセスの名前空間情報とホストマシンの名前空間情報を比較します。ご覧のとおり、pid 名前空間にはそれぞれ異なる対応する値があります。

以下は、他の名前空間で試すことができる実験的なコマンドです。

3. 実験

  1. 共有を解除--mount --fork /bin/bash  

マウント名前空間を作成し、それぞれの環境で異なるマウント ディレクトリを使用します。

  1. 共有を解除--uts --fork /bin/bash  

UTS を使用するとホスト名を分離できるため、各名前空間に独立したホスト名を持たせることができ、hostname コマンドを使用して変更できます。

  1. 共有解除--ipc --fork /bin/bash  

IPC 名前空間は主にプロセス間通信を分離するために使用されます。 Linux のプロセス間通信には、パイプ、シグナル、メッセージ、共有メモリ、セマフォ、ソケットなどの方法が含まれます。 IPC 名前空間を使用すると、これらすべての名前空間間の通信方法が無効になります。しかし、これこそがまさに私たちが望んでいることです。

  1. 共有を解除--user -r /bin/bash  

ユーザー名前空間は非常に理解しやすいです。ある名前空間または別の名前空間に xjjdog アカウントを作成できますが、それらは互いに影響しません。

  1. 共有を解除--net --fork /bin/bash  

net 名前空間、これは非常に便利です。ネットワーク デバイス、IP アドレス、ポートなどの情報を分離するために使用できます。

ご覧のとおり、Linux はさまざまな名前空間を通じて、さまざまなリソースをきめ細かく分離できます。 Docker 自体も新しいボトルに入ったおもちゃです。 Docker の革新的な点は、中央リポジトリを追加し、多くの使いやすいコマンドをカプセル化していることです。

これまでのところ、CPU とメモリのリソース使用量を分離しておらず、これらの問題を解決するための対応する名前空間も存在しないことに気付くかもしれません。

リソース制限機能は、Cgroups を使用してクォータを構成することによって実現され、名前空間とは関係ありません。次の記事ではCgroupsテクノロジーについて紹介します。

最後に、Docker のライフサイクル図を示します。ソース (http://docker-saigon.github.io/post/Docker-Internals/ )。必要な学生は私を友達として追加して入手することができます。

Docker の開発により、アプリケーション ツール チェーンは非常に成熟し、多くの学生がすでにそれに精通しています。コンテナ技術に非常に興味がある場合は、基礎となる原理についても調べてみるといいでしょう。このように、Google は独自のコンテナを推進する場合でも、Docker を使い続ける場合でも、すぐに習得できます。

著者について: Sister Taste (xjjdog)、プログラマーが寄り道をすることを許可しない公開アカウント。インフラストラクチャと Linux に重点を置きます。 10 年間のアーキテクチャと 1 日あたり数千億のトラフィックを基に、私たちはお客様とともに高並行性の世界を探求し、新たな体験をお届けします。私の個人WeChatはxjjdog0です。今後のコミュニケーションのために、私を友達として追加してください。

<<:  「妹2」と同じモデルが売れ行き好調、アマゾンクラウドサービス(AWS)が「小曼」の出航を支援

>>:  Tmallコンシューマーエレクトロニクス新年ショッピングフェスティバルが再び登場 ブラックテクノロジー、バーチャルインタラクティブテクノロジーがライブEコマースを強化

推薦する

詳細: 360 ウェブサイトナビゲーション検索ボックスが Baidu 検索製品を削除

360 ナビゲーションのニュース検索は、Baidu ではなく 360 独自の総合検索エンジンに置き換...

UFIDA NC Cloudは、クラウドネイティブアーキテクチャにより、企業の7つのデジタル機能を革新し、強化し続けています。

新しいテクノロジーの継続的な進化と集中的な開発により、すべての企業がデジタル化へと向かっています。ク...

クラウドコンピューティングのデータ保護状態を改善する方法

現在、ほとんどのデータ保護ソリューションは、オンプレミスのデータ保護インフラストラクチャのコストを削...

アワーパルムテクノロジーが東旺を8億元で買収、宋海博は59倍の利益を獲得、IPOに劣らない

8億1000万元という買収額は、2012年の純利益の14倍のPERに相当する。今回の買収によって株主...

モバイル インターネット 2017 年第 2 四半期夏季レポート: モバイル エコロジカル トラフィックが全般的に増加中、誰が優位に立つでしょうか?

ユーザー数が安定する傾向にあるため、APPの断片化とシナリオベースの使用が明確に傾向しています。次に...

Tencent Magicianがデータセンターに活気をもたらす

[51CTO.com からのオリジナル記事] ピノキオという名の小さな木製の人形が、命を得て本当の男...

高品質のブログを育成して高品質の外部リンクを作成する

ブログは、ウェブログ、ブログ、またはブログとも呼ばれ、個人によって管理され、新しい記事が随時公開され...

ウェブサイトKは成功への道であり、ウェブサイトを磨くのに最適な時期です

ウェブサイトが K-ed されると行き止まりになるのでしょうか? ウェブサイトが K-ed されると...

JVM パフォーマンスの最適化は難しいと聞きました。今日試してみました!

[[403396]] Java 開発を行う学生にとって、JVM パフォーマンス最適化は習得するのが比...

分散理論を説明するのに太極拳を使うのはとても快適です!

[[361252]] 『天剣龍驤』では、趙敏公主が専門家集団を率いて武当山を包囲しました。武当のリー...

ニュースソースを使用してウェブサイトを最適化する際に避けるべき問題の簡単な分析

ウェブサイトの外部リンクの最適化がますます困難になるにつれて、低コストで高品質の外部リンクを取得する...

ブラジルサーバー: zenlayer、30% オフ、リオデジャネイロ/フォルタレザ データセンター、10Gbps 帯域幅、月額 167 ドルから

Zenlayerは、南米ブラジルに独自のブラジルデータセンターを開設しました。データセンターはブラジ...

#ブラックウィーク5#: virpus-サイト全体(VPSとサーバーを含む)が50%オフ/Xen/512Mメモリ、年間支払い12.5ドル

Virpus のブラックフライデー プロモーションが始まりました。これは素晴らしいです。サイト全体の...

YY: テンセントの脅威にさらされながらも「控えめに」成長

起業して7年、李雪玲はナスダック上場に一歩近づきました。北京時間10月15日夜、Huya CEOの李...

企業向けインターネットマーケティング手法の選び方

今はインターネットの時代です。特に1980年代、1990年代生まれの人たちを中心に、多くの人がインタ...