我試圖讓一個帶有兩個網絡接口的CentOS
容器。 在閱讀Docker文檔和「googleing」之後,我發現this GitHub issue comment指定了如何實現這一點。以特定順序向Docker容器中添加新NIC
跟隨它,我創建了一個新的網絡(默認類型:bridge
)
docker network create my-network
檢查新的網絡,我可以看到,碼頭工人分配給它的子網172.18.0.0/16
和網關172.18.0.1/16
。
然後,創建容器的時候,我特別重視新網絡:
docker create -ti --privileged --net=my-network --mac-address 08:00:AA:AA:AA:FF <imageName>
容器內,我可以ifconfig
檢查的確接口存在與IP和MAC地址:
eth0 Link encap:Ethernet HWaddr 08:00:AA:AA:AA:FF
inet addr:172.18.0.2 Bcast:0.0.0.0 Mask:255.255.0.0
inet6 addr: fe80::a00:aaff:feaa:aaff/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3 errors:0 dropped:0 overruns:0 frame:0
TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:258 (258.0 b) TX bytes:258 (258.0 b)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
,當我的容器連接到默認多克爾網絡(bridge0
又名bridge
)的問題來了:
docker network connect bridge <my-container>
現在檢查在容器中的接口:
eth0 Link encap:Ethernet HWaddr 02:42:AC:11:00:02
inet addr:172.17.0.2 Bcast:0.0.0.0 Mask:255.255.0.0
inet6 addr: fe80::42:acff:fe11:2/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:17 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2941 (2.8 KiB) TX bytes:508 (508.0 b)
eth1 Link encap:Ethernet HWaddr 08:00:AA:AA:AA:FF
inet addr:172.18.0.2 Bcast:0.0.0.0 Mask:255.255.0.0
inet6 addr: fe80::a00:aaff:feaa:aaff/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:17 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2941 (2.8 KiB) TX bytes:508 (508.0 b)
接口爲我的新的網絡獲取移動到eth1
,同時默認網絡接口獲取eth0
。
此外,檢查在接口(/etc/sysconfig/network-scripts/ifcfg-eth0
)配置文件時,我可以看到,MAC地址指定有從所述一個運行容器(08:00:AA:AA:AA:FF
)時手動設置的不同:
DEVICE="eth0"
BOOTPROTO="dhcp"
HWADDR="52:54:00:85:11:33"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
MTU="1500"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="25016937-1ff9-40d7-b4c3-18e08af0f98d"
在
/etc/sysconfig/network-scripts
中只有eth0
的配置文件。eth1
(新添加的界面)文件丟失。
由於我涉及的工作要求,我需要第一個接口必須始終禁用,並且必須專門設置其MAC地址。
任何其他與網絡相關的工作都必須通過新連接的NIC。
我的問題是:
我怎麼能把一個新的NIC的容器,這樣eth0
具有所需的MAC地址。
在圖像級別做這件事情也很好。