linuxの名前空間、ドッキングウィンドウのネットワークモード

1.linux名前空間

 1.コンセプト

  名前空間は、コアのLinuxカーネルリソースを単離するために使用されます。他の人が唯一のプロセスの二組が互いの存在を感じていない自分自身のリソースに関連付けられているプロセスを見ることができますが、名前空間によって、いくつかのプロセスが唯一、自分自身に関連付けられたリソースの一部を見ることができますすることができます。具体的な実装では、同じ名前空間で指定された1つまたは複数のプロセスのリソースです。
  Linuxの名前空間は、唯一のプロセスで現在の名前空間に影響を与えます名前空間にシステムリソースを変更し、独立したグローバルなシステムリソースの異なる名前空間でプロセスを作る、グローバル包装分離システムリソースである名前空間内の他のプロセスには影響を与えません。

 

2.使用方法

  実際には、名前空間を達成するために、Linuxカーネルの主な目的は、軽量仮想化(コンテナ)サービスを実現することです。同じ名前空間の下のプロセスでは、互いの認識、そして外の世界を変えることができるプロセスについて何も知りませんでした。これは、分離の目的を達成するように、スタンドアロンシステムで自分自身を考えて、プロセスがコンテナの錯覚を生成することができます。その名前空間技術のLinuxカーネルは、このような容器技術として登場し、開発のドッキングウィンドウのための基本的な条件を提供します。
  私たちは、ドッキングウィンドウの実装の観点から、リソース隔離コンテナを達成する方法を検討することができます。このようなスイッチングは、ルートによってファイルシステムを分離するためにポイントchrootコマンドを取り付けることは不可能です。通信し、分散環境内に位置するように、容器は、ネットワークの分離を必要とする個別のIP、ポートおよびルーティングを有していなければなりません。一方、コンテナは、ネットワークに自身を識別するために別のホスト名が必要です。次はまた、単離体通信に同様のプロセスとの間でのユーザー権限が必要です。最後に、コンテナで実行中のアプリケーションは、プロセスID(PID)を必要とする、また、PIDの天然宿主から単離する必要があります。これらの6つの分離能力は、容器のための基礎であることを、次のは、Linuxの能力によって提供されます。

 

 テーブルの上に最初の6つの名前空間コンテナ必見分離技術の実現です。

 

2.dockerネットワークモード

1.原則

  ホストでのLinux、仮想ブリッジドッカーコンテナ(docker0)を使用してドッカーブリッジは、容器ブリッジドッカードッカーに従ってセグメントに割り当てられるドッカー当たりブリッジしながら、コンテナIPと呼ばれる容器ときIPアドレスを、開始コンテナのデフォルトゲートウェイ。同じホストコンピュータに容器が同じブリッジに接続されているので、容器コンテナIPので、容器との間の直接通信することによって可能です。

  ドッカーホスト仮想ブリッジが出ている、実際のネットワークデバイスが存在しない場合、外部ネットワークはに対処されていない、この外部ネットワークは、コンテナ-IPによって容器に直接アクセスできないことを意味します。容器は、アクセス外部アクセスできるようにすることが望まれる場合、ホストは、コンテナを有効にするために、容器をマッピングすることによって(ポートマッピング)即ちドッカーランタイムホストポートであってもよい-pまたは-Pパラメータによって作成され、アクセスの時間コンテナ[ホストIP]を介して: 【容器ポート]コンテナへのアクセス。

 

2.ネットワークモードの4つのタイプが

1.ブリッジモード--net =ブリッジ(デフォルト)

  ときドッカープロセスが開始され、それがドッカーコンテナはこの仮想ブリッジに接続され、このホスト上で起動し、ホスト上でdocker0という名前の仮想ブリッジを作成します。同様の仮想ブリッジワークと物理スイッチ、レイヤ2ネットワークに接続されているスイッチを介してホスト上のすべてのコンテナように、容器は、(pingテストを介して)直接IPを介して互いに通信することができます

  docker0コンテナに1つのIPサブネットから分配、およびデフォルトゲートウェイdocker0コンテナのIPアドレスを設定します。ホスト、ペアデバイスのveth仮想ネットワークアダプタ上で作成、ドッカーは、このような類似した名前をvethxxxし、新しく作成されたと命名さはeth0(NICコンテナ)で容器に入れるのvethペアデバイス、およびホスト上のもう一方の端を終了します名前、およびdocker0を埋めるためのネットワーク機器に参加します。あなたはbrctl showコマンドで表示することができます。

  ブリッジモードは、ドッキングウィンドウのデフォルトモードネットワークである、--netパラメータを記述していないブリッジモードです。ドッキングウィンドウの実行-pを使用している場合、ドッキングウィンドウは実際にはiptablesのルールにDNATを行う、ポートフォワーディング機能を実装しています。あなたは、iptablesの-t NAT -vnLビューを使用することができます。

図は次のとおりです。

例えば:

(1)[スタート] nginxの

-pドッキングウィンドウラン8080 nginxの

(2)キュベット

ドッキングウィンドウはA5を検査します

次のようにネットワーク情報は次のとおりです。

 

2.ホストモード--net =ホスト

  ホスト・モードを使用して、コンテナの開始時刻場合、コンテナは独立したネットワークの名前空間を取得しますが、ホストとネットワークの名前空間を共有しません。仮想コンテナは、ネットワークカードから外れて独自のIPを設定する、などが、IPの利用およびホストのポートはありません。などのファイルシステム、プロセス、などの容器、またはホストおよび単離のリストしかし、他の態様。

  外部コンテナポートサービス内のホストのIPアドレスとの通信は、ホストのポートを使用することができるように、容器のホストモードを使用することができます使用し、NAT、ホストを必要としない最大の利点は、ネットワークのパフォーマンスが優れているが、ドッキングウィンドウのホストが持っています再度使用することはできませんポートを使用して、ネットワークの分離が良くありません。

 以下のようにホストのパターン:

 

例えば:( -p指定されたポートとホスト同じポートとIPとの直接使用することなく、直接起動。)

ドッキングウィンドウ@デフォルト:〜$ドッキングウィンドウの実行-d --net = ホストのnginx 
fe607548d6f1faca06b0d9e02f1305f2d0d5c4691202c18f82000b42fa4a6732

チェック情報は、コンテナを検査します:

 

3.noneモード--net =なし

  使用none模式,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等。

  这种网络模式下容器只有lo回环网络,没有其他网卡。none模式可以在容器创建时通过--network=none来指定。这种类型的网络没有办法联网,封闭的网络能很好的保证容器的安全性。

示意图如下:

 例如:

docker@default:~$ docker run -d --net=none nginx
371686158b33958ec3c71b6fb3db2c5309f8515e07b0d76aac0bc8b0745d293a
docker@default:~$ docker inspect 37

 

查看网络信息如下:

 

4.container模式 --net=container:容器ID或name

  这个模式指定新创建的容器和已经存在的一个容器共享一个 Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的 IP,而是和一个指定的容器共享 IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过 lo 网卡设备通信。

示意图如下:

 例如:

docker run -d --net=container:371686158b33 nginx

 

おすすめ

転載: www.cnblogs.com/qlqwjy/p/12365333.html
おすすめ