I.はじめに
ドッカードッカーの実行がコンテナベースを作成するときは、-netネットワークモードオプションを使用することができますコンテナを指定し、ドッカーのデフォルトモードのネットワークは、次の4つがあります。
- 指定されたホストモード、-net =ホスト;
- 容器モード、-net =コンテナ:NAME_or_IDは、指定されました。
- なしモード、-net =いずれも指定されていません。
- ブリッジモード、-net =ブリッジは、デフォルトの設定を指定されています。
二、ホストモード(推奨されません)
ドッカーコンテナがホストモードに基づいて、独立したネットワーク名前空間の分離・サブシステムを実行するためにデフォルトで割り当てられます、コンテナが別のネットワークの名前空間を取得することはできませんが、ホストと共有ネットワーク名前空間は、コンテナは、独自の仮想ネットワークカードの設定ではありません自身のIPなどが、ホストのIPを使用するとポート。
三、コンテナモード(推奨されません)
独自のネットワークカードを作成していない、新しく作成されたコンテナは、独自のIPを設定しますが、指定されたコンテナと共有IP、ポート範囲。同一のネットワークに加えて、同じ2つの容器、例えば、ファイル、プロセスリスト、または単離されたような他のシステム、。
四、ブリッジブリッジモード(推奨)
1、基本
ドッカーブリッジモードがIPを提供し、各容器のネットワーク名前空間を割り当て、デフォルトのネットワークモード、であり、構成をルーティング、デフォルトでは、仮想ブリッジスイッチDocker0に接続された容器をドッカーであろう。
ホスト:
注:このdocker0両方ブリッジカードは、それが仮想的であることに注意してください、仮想ブリッジスイッチです。ゲートウェイIPアドレス]ドッキングウィンドウコンテナはIPです。
ドッキングウィンドウコンテナ:
:私は現象を言いたいまず第一に、我々はドッキングウィンドウコンテナを開け、ifconfigコマンドは、もう一つのことになります
。注:ここでは私は2個のドッキングウィンドウコンテナを開け:
注:のveth中国名は、仮想ネットワークカードのデバイスである、それが対になっていますコンテナを起動した後、vethxxxxと呼ばれる一端のホスト、ドッキングウィンドウコンテナにはeth0という男性(名前は固定されています)
2次ブリッジモードトポロジー
仮想ブリッジスイッチの詳細を表示するための3、brctlコマンド
yum install bridge-utils -y
brctl show
五、なしモード(推奨社)
あなたはpipworkツールの設定を使用する必要があるので、モデル名が示唆なしには、ネットワーク構成は、no ip、カードなし、ノー何も何もありません。
注:なしIPが存在しないので、何も存在しないネットワークモードでのドッキングウィンドウ実行コマンドは、もはや-pポートマッピング、ポートをマッピングすることはできませんが、解決策が見つからないと!
pipwork実際のネットワーク構成
1、編集ドッカ・ネットワーク・ファイル
vim /etc/sysconfig/docker-network
systemctl restart docker
2、編集のifcfg-ens33、のifcfg-BR0のネットワークプロファイル
cd /etc/sysconfig/network-scripts/
vim ifcfg-ens33
DEVICE=ens33
BOOTPROTO=none
ONBOOT=yes
TYPE=Ethernet
BRIDGE="br0"
vim ifcfg-br0
DEVICE="br0"
BOOTPROTO=none
ONBOOT=yes
TYPE="Bridge"
IPADDR=172.16.193.200
NETMASK=255.255.255.0
GATEWAY=172.16.193.2 #利用pipework工具指定容器网关时,需要使用这个ip
注:次の配管ツール指定されたコンテナゲートウェイは、仮想ブリッジ、スイッチのIPカードを使用することはできません
systemctl restart network #使配置生效
ifconfig
注:仮想ネットワークアダプタBR0にブリッジするens33インターフェース!
3、ダウンロード、pipworkツールをインストール
git clone https://github.com/jpetazzo/pipework
cp ./pipework/pipework /usr/local/bin/
4、スタートモード容器なし
docker run -itd -p 6022:22 --net=none docker.io/jdeathe/centos-ssh
ifconfig
5、提供されるツールを使用してpipworkネットワークドッキングウィンドウコンテナ
pipework br0 0ae0e8cff698 172.16.193.100/24@172.16.193.2
# 虚拟网卡交换机的名称 容器ID 指定容器的IP 指定容器的网关
#注意这里网关不能填172.16.193.200,至于为什么请看下文详解!
docker exec -it 0ae0e8cff698 /bin/bash
yum install net-tools -y
ifconfig
route -n
ping www.baidu.com #看看网络是否通了,通了就对了!
ルックは、これはあなたがネットワークアダプタの仮想ブリッジスイッチのIP(172.16.193.200)にコンテナゲートウェイを置けば、あなたは内部ネットワークのIPにpingを実行することができ、成功します、ではない外部のネットワーク
6.なぜ仮想スイッチブリッジへのコンテナゲートウェイ(BR0)ネットワークカードのIP(172.16.193.200)が動作しませんか?
上記のチャートは、理解と組み合わせたモード・アーキテクチャを橋渡ししてください!
ゲートウェイのルーティングが必要になると、我々は、機能をルーティングする仮想ブリッジスイッチを持っていないので、我々はそのゲートウェイ172.16.193.200を設定したとします。だから、ルートできません!それはゲートウェイはLANのブロードキャストアドレスで到達する前に、あなたが172.16.193.2、172.16.193.2を記入した場合、ゲートウェイは見つけることができ、およびゲートウェイは、ルーティング機能。なぜ以前に設定ゲートウェイ172.16.193.200を行うことができます!ブリッジの合併IP IPと私たちのホスト仮想スイッチ以来。以前に記入すると非連結IPがホストで、ホストは、テーブルがルーティング機能である、ことができますルーティングされますroute -n
。