ネットワーク構成コンテナドッキングウィンドウ

1.Linuxカーネルの実装の名前空間の作成

1.1ip netnsコマンド

あなたは、IP netnsコマンドによってネットワークの名前空間の操作を完了することができます。インストールパッケージからipnetnsのiprouteコマンドは、システムは、一般的に、ない場合は、自分自身をインストールインストールされます。

注:あなたは、ネットワーク設定、IP netnsコマンドを変更する権限をSUDO必要が。

関連の操作は、IP netnsすることで、ネットワークの名前空間上でコマンド行うことができます、あなたはIP netnsヘルプを介してコマンドのヘルプ情報を表示することができます。

[root@localhost ~]# ip netns help
Usage: ip netns list
       ip netns add NAME
       ip netns set NAME NETNSID
       ip [-all] netns delete [NAME]
       ip netns identify [PID]
       ip netns pids NAME
       ip [-all] netns exec [NAME] cmd ...
       ip netns monitor
       ip netns list-id

デフォルトでは、Linuxシステムは、netns listコマンドは、すべての情報を返さないIP、何のネットワークの名前空間ではありません。

ネットワークの名前空間を作成する1.2

コマンドによってNS0と呼ばれる名前空間を作成します。

[root@localhost ~]# ip netns list
[root@localhost ~]# ip netns add ns0
[root@localhost ~]# ip netns list
ns0

同じ名前の名前空間がすでに存在する場合、コマンドは名前空間のファイルを作成することはできません報告します「の/ var /実行/ netns / NS0」:ファイルにエラーがあります。

[root@localhost ~]# ls /var/run/netns/
ns0
[root@localhost ~]# ip netns add ns0
Cannot create namespace file "/var/run/netns/ns0": File exists

各ネットワークの名前空間の場合は、テーブル、ARPテーブル、iptablesの、その他のネットワーク関連のリソースをルーティングする、独自の個別のネットワークカードを持っています。

1.3オペレーティング・ネットワークの名前空間

IP IP netns EXECコマンドは、サブコマンドは、ネットワークの名前空間に対応するコマンドを実行しています。

新しく作成されたネットワークの名前空間のカード情報を見ます

[root@localhost ~]# ip netns exec ns0 ip addr
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

あなたが新たに作成された空間のネットワーク名がLOのループバック・アダプタを作成します見ることができ、カードはこの時点で閉じられています。この場合、ループバックLOカードにpingを実行しようとすると、ネットワークに到達不能プロンプトが表示されます

[root@localhost ~]# ip netns exec ns0 ping 127.0.0.1
connect: 网络不可达

Loのループバックアダプタは、次のコマンドで有効になっています

[root@localhost ~]# ip netns exec ns0 ip link set lo up
[root@localhost ~]# ip netns exec ns0 ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.042 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.031 ms

1.4転送機器

我々は、異なるネットワーク間で名前空間(例えばのvethなどの)デバイスを転送することができます。デバイスは、ネットワークの名前空間に属し、そのネットワークの名前空間内に移転した後、デバイスを表示されない可能性があるため。

前記、VETH転送装置に属するデバイス、及び多くの他のデバイス(例えば、LO、VXLAN、PPP、ブリッジなど)に転送されません。

1.5つのペア

仮想イーサネットのフルネームためVETHは、着信データパケットの一端からすべてのポートがもう一方の端を出て、そしてその逆するポートの組です。
VETHペアが直接通信ネットワーク異なる名前空間のために導入されて、あなたはそれが直接、2つのネットワークの名前空間を接続することができます。

第七の作成1.6

[root@localhost ~]# ip link add type veth
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:88:34:3d brd ff:ff:ff:ff:ff:ff
    inet 192.168.249.131/24 brd 192.168.249.255 scope global noprefixroute dynamic ens33
       valid_lft 1122sec preferred_lft 1122sec
    inet6 fe80::ad8c:10d3:b579:8614/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:38:4e:31:46 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
4: veth0@veth1: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether ca:23:e1:4b:92:a3 brd ff:ff:ff:ff:ff:ff
5: veth1@veth0: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether f6:bd:9e:56:78:91 brd ff:ff:ff:ff:ff:ff

あなたが見ることができ、この時間は、システムは、この時点でのvethに「有効でない」の状態である、アップ接続するために2枚の仮想ネットワークカードveth1右のvethペア、およびveth0を追加しました。

1.7ネットワーク間の通信を実現する名前空間

ここでは、名前空間を達成するために2つの異なるネットワーク間のveth通信を使用します。ちょうど今、私たちは、NS0、名前空間と呼ばれるネットワークを作成して、その後、NS1という名前の下の情報ネットワークの名前空間を作成します

[root@localhost ~]# ip netns add ns1
[root@localhost ~]# ip netns list
ns1
ns0

その後、我々はNS0に追加veth0ます、NS1に追加veth1ます

[root@localhost ~]# ip link set veth0 netns ns0
[root@localhost ~]# ip link set veth1 netns ns1

その後、我々はこののvethペア設定のIPアドレスであったし、それらを有効にします

[root@localhost ~]# ip netns exec ns0 ip link set veth0 up
[root@localhost ~]# ip netns exec ns0 ip addr add 10.0.0.1/24 dev veth0
[root@localhost ~]# ip netns exec ns1 ip link set lo up
[root@localhost ~]# ip netns exec ns1 ip link set veth1 up
[root@localhost ~]# ip netns exec ns1 ip addr add 10.0.0.2/24 dev veth1

このペアのvethのステータスを確認

[root@localhost ~]# ip netns exec ns0 ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
4: veth0@if5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether ca:23:e1:4b:92:a3 brd ff:ff:ff:ff:ff:ff link-netnsid 1
    inet 10.0.0.1/24 scope global veth0
       valid_lft forever preferred_lft forever
    inet6 fe80::c823:e1ff:fe4b:92a3/64 scope link 
       valid_lft forever preferred_lft forever
[root@localhost ~]# ip netns exec ns1 ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
5: veth1@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether f6:bd:9e:56:78:91 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 10.0.0.2/24 scope global veth1
       valid_lft forever preferred_lft forever
    inet6 fe80::f4bd:9eff:fe56:7891/64 scope link 
       valid_lft forever preferred_lft forever

上記研磨することができるから、我々は成功し、右のvethを有効にし、それぞれのvethデバイスに対応するIPアドレスが割り当てられています。私たちは、NS1でのアドレスNS0 IPアクセスしようとしました:

[root@localhost ~]# ip netns exec ns1 ping 10.0.0.1
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.140 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=0.037 ms
64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=0.042 ms

あなたは、2つの異なるネットワークの名前空間との間のネットワークの相互作用の実装を成功させるための第七のを見ることができます。

1.8vethデバイスの名前変更

[root@localhost ~]# ip netns exec ns0 ip link set veth0 down
[root@localhost ~]# ip netns exec ns0 ip link set dev veth0 name eth0
[root@localhost ~]# ip netns exec ns0 ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
4: eth0@if5: <BROADCAST,MULTICAST> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether ca:23:e1:4b:92:a3 brd ff:ff:ff:ff:ff:ff link-netnsid 1
    inet 10.0.0.1/24 scope global eth0
       valid_lft forever preferred_lft forever
[root@localhost ~]# ip netns exec ns0 ip link set eth0 up

2.一般的なネットワーク・コンフィギュレーション・モード

2.1ブリッジモードの設定

[root@localhost ~]# docker run -it --name t1 --rm busybox
/ # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
6: eth0@if7: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue 
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
/ # exit
[root@localhost ~]# docker container ls -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@localhost ~]# docker run -it --name t1 --network bridge --rm busybox 
/ # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
8: eth0@if9: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue 
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
/ # exit

2.2なしモードの設定

[root@localhost ~]# docker run -it --name t1 --network none --rm busybox 
/ # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
/ # exit

2.3設定モード容器

第一の容器を開始

[root@localhost ~]# docker run -it --name b1 --rm busybox
/ # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
10: eth0@if11: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue 
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
/ # 

第2の容器を開始

[root@localhost ~]# docker run -it --name b2 --rm busybox
/ # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
14: eth0@if15: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue 
    link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
/ # 

私たちは道に第2の容器を変更することが開始されます場合は、この時点で、それをb2は172.17.0.3、第一容器のIPアドレスは、同じではありませんであると呼ばれる血管のIPアドレスとネットワークを共有する手段を全く見ることができます容器と呼ばれる、すなわち、IP IP B1血管B2とが一致して作られたIPアドレスを共有するが、ファイル・システムを共有しないことができます。

[root@localhost ~]# docker run -it --name b2 --rm --network container:b1 busybox
/ # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
14: eth0@if15: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue 
    link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
/ # 

この時点では、B1、コンテナ上のディレクトリを作成します

/ # mkdir /tmp/data
/ # ls /tmp/
data

B2コンテナは、/ tmpディレクトリを確認すると、ファイルシステムが唯一のネットワークを共有隔離の状態であるため、このディレクトリを見つけることができませんでした。

B2コンテナにサイトを展開

/ # ls /tmp/
/ # echo 'hello world' > /tmp/index.html
/ # ls /tmp/
index.html
/ # httpd -h /tmp
/ # netstat -antl
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       
tcp        0      0 :::80                   :::*                    LISTEN   

このサイトにアクセスするには、ローカルアドレスとB1の容器で

/ # wget -O - -q 127.0.0.1:80
hello world

したがって、容器モードでコンテナとの間の関係は、単一のホスト上の2つの異なるプロセスと等価です

設定2.4ホストモード

直接指定の起動モードのホスト容器

[root@localhost ~]# docker run -it --name b2 --rm --network host busybox
/ # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:0c:29:88:34:3d brd ff:ff:ff:ff:ff:ff
    inet 192.168.249.131/24 brd 192.168.249.255 scope global dynamic ens33
       valid_lft 1261sec preferred_lft 1261sec
    inet6 fe80::ad8c:10d3:b579:8614/64 scope link 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue 
    link/ether 02:42:38:4e:31:46 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:38ff:fe4e:3146/64 scope link 
       valid_lft forever preferred_lft forever

この時点で、私たちは、このコンテナにHTTPサイトを開始した場合、我々が直接アクセスできるIPホストマシンを直接ブラウザでは、コンテナのサイト。

一般的な操作のコンテナ

3.1ビューのホスト名コンテナ

[root@localhost ~]# docker run -it --name t1 --network bridge --rm busybox
/ # hostname
80cbf4b742fa

3.2ホスト名コンテナが開始に注入した場合

[root@localhost ~]# docker run -it --name t1 --network bridge --hostname liping --rm busybox
/ # hostname
liping
/ # cat /etc/hosts
127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::0	ip6-localnet
ff00::0	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters
172.17.0.2	liping     # 注入主机名时会自动创建主机名到IP的映射关系
/ # cat /etc/resolv.conf 
# Generated by NetworkManager
search localdomain
nameserver 192.168.249.2    # DNS也会自动配置为宿主机的DNS
/ # ping www.baidu.com
PING www.baidu.com (14.215.177.38): 56 data bytes
64 bytes from 14.215.177.38: seq=0 ttl=127 time=70.037 ms
64 bytes from 14.215.177.38: seq=1 ttl=127 time=42.033 ms

手動でコンテナを使用するように指定するDNS 3.3

[root@localhost ~]#  docker run -it --name t1 --network bridge --hostname liping --dns 114.114.114.114 --rm busybox
/ # cat /etc/resolv.conf
search localdomain
nameserver 114.114.114.114
/ # nslookup -type=a www.baidu.com
Server:		114.114.114.114
Address:	114.114.114.114:53

Non-authoritative answer:
www.baidu.com	canonical name = www.a.shifen.com
Name:	www.a.shifen.com
Address: 14.215.177.38
Name:	www.a.shifen.com
Address: 14.215.177.39

IPアドレスへのマッピングホスト名注入3.4手動への/ etc / hostsファイル

[root@localhost ~]# docker run -it --name t1 --network bridge --hostname liping --add-host www.a.com:1.1.1.1 --rm busybox
/ # cat /etc/hosts
127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::0	ip6-localnet
ff00::0	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters
1.1.1.1	www.a.com
172.17.0.2	liping

3.5オープンコンテナ港

実行ドッキングウィンドウの実行が-pオプションを持っている場合は、アプリケーションコンテナポートが目的のホストにアクセスするためのポートコンテナを介して内部アプリケーションへのアクセスを許可することができ、外部のホストを達成するために、ホストマシンにマップすることができます。

-pオプションを複数回使用することができ、それが露出させることができるコンテナ港は本当にリスニングでなければなりません。

フォーマットを使用しての-pオプション:

  • -p
    • ダイナミックのすべてのポートのホストアドレスにマッピングされたコンテナ指定されたポート
  • -p <ポートホスト>:<ポートコンテナ>
    • コンテナー港 指定されたホストポートにマッピングされました
  • -p ::
    • 指定されたコンテナ港 指定されたホストにマッピングされ ダイナミックポート
  • -p
    • 指定されたコンテナ港 指定されたホストにマッピングされ ポート

ランダム動的ポートは、ポートにドッカーportコマンドを使用して、特定のマッピング結果を意味します。

[root@localhost ~]# docker run --name web --rm -p 80 nginx

常にフロントエンドを占有します上記のコマンドを実行した後、私たちは、ホストマシンにマッピングされているコンテナ港80を見て何のポートに接続されている新しいターミナルをオープンしました

[root@localhost ~]# docker port web
80/tcp -> 0.0.0.0:32768

このように、80ポートのコンテナがホストマシン上の32768ポートにさらされ、今回はコンテナ港へのアクセスがサイトを参照するかどうかを確認するために、ホストマシン上で訪問します

[root@localhost ~]# curl http://127.0.0.1:32768
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

iptablesのファイアウォールのルールは自動的に、ポータブルコンテナを生成し、自動的に削除規則をポータブルコンテナを削除して作成されます。

ランダム指定されたIPポートをマッピングするポートへの容器

[root@localhost ~]# docker run --name web --rm -p 192.168.249.131::80 nginx

別の端末の場合、ポートマッピングを参照してください。

[root@localhost ~]# docker port web
80/tcp -> 192.168.249.131:32768

ホストマシンの指定されたポートへの船舶のポートマッピング

[root@localhost ~]# docker run --name web --rm -p 80:80 nginx

別の端末の場合、ポートマッピングを参照してください。

[root@localhost ~]# docker port web
80/tcp -> 0.0.0.0:80

3.6カスタム属性情報ネットワークブリッジdocker0

ブリッジdocker0定義されたネットワークからの属性情報は、構成ファイル/etc/docker/daemon.jsonを変更する必要があります

{
    "bip": "192.168.249.125/24",
    "fixed-cidr": "192.168249.125/25",
    "fixed-cidr-v6": "2001:db8::/64",
    "mtu": 1500,
    "default-gateway": "10.20.1.1",
    "default-gateway-v6": "2001:db8:abcd::89",
    "dns": ["10.20.1.2","10.20.1.3"]
}

コアオプション、すなわち意味IPブリッジ、BIP、独自のIPアドレスdocker0ブリッジを指定するために使用され、他のオプションは、このアドレスで計算することができます。

3.7dockerリモート接続

あなたが設定ファイルを変更する必要が/etc/docker/daemon.jsonあなたが代わりにTCPを使用している場合は、少なくともUnixのソケットアドレス形式(/var/run/docker.sock)をリッスンC / Sデーモンdockerd、、、以下を追加し、ドッキングウィンドウのサービスを再起動します。

"hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]

クライアントが直接dockerdに伝達され、上の「-H | --host」オプションは、上のホスト制御ドッキングウィンドウコンテナを指定します

docker -H 192.168.249.249.131:2375 ps

3.8dockerカスタムブリッジを作成

docker0は異なる、追加のカスタムブリッジを作成します。

[root@localhost ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
2166306bfc82        bridge              bridge              local
6dc26f122a07        host                host                local
16b57e624a73        none                null                local
[root@localhost ~]# docker network create -d bridge --subnet "192.168.2.0/24" --gateway "192.168.2.1" br0
237a1cafe6e03a8f6d6b1eb4f7b26edc8928540b97bf6c03bebfb47b3a3edfa7
[root@localhost ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
237a1cafe6e0        br0                 bridge              local
2166306bfc82        bridge              bridge              local
6dc26f122a07        host                host                local
16b57e624a73        none                null                local

コンテナを作成するために、新しく作成されたカスタムブリッジを使用します。

[root@localhost ~]# docker run -it --name b1 --network br0 busybox
/ # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
35: eth0@if36: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue 
    link/ether 02:42:c0:a8:02:02 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.2/24 brd 192.168.2.255 scope global eth0
       valid_lft forever preferred_lft forever

コンテナの再作成は、デフォルトのブリッジを使用します。

[root@localhost ~]# docker run --name b2 -it busybox
/ # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
37: eth0@if38: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue 
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever

想像して、この時間B1とB2は、相互に通信することができますか?あなたはどのようにこの通信を実現することができない場合は?

おすすめ

転載: www.cnblogs.com/liping0826/p/12641296.html
おすすめ