두 개의 네트워크 인터페이스가있는 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>
, 내가 실제로 인터페이스가 IP와 MAC 주소를 가진 존재입니다 ifconfig
확인 할 수 있습니다
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)
인터페이스를 나의 새로운 네트워크는 한편의 기본 네트워크 인터페이스는 eth0
가져, eth1
상으로 이동됩니다.
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/ifcfg-eth0
)에 대한 구성 파일을 점검 할 때 또한, I는 컨테이너 (
08:00:AA:AA:AA:FF
)을 실행할 때 수동으로 설정된 하나가 다르다 MAC 주소가 지정된 것을 알 수있다
/etc/sysconfig/network-scripts
에는eth0
에 대한 구성 파일 만 있습니다.eth1
(새로 추가 된 인터페이스)의 파일이 누락되었습니다.
내가 참여하고있는 작업의 요구 때문에 첫 번째 인터페이스가 항상 비활성화되어야하고 MAC 주소가 구체적으로 설정되어야합니다.
기타 네트워크 관련 작업은 새로 연결된 NIC를 통과해야합니다.
내 질문은 : 나는 용기에 새 NIC를 연결할 수있는 방법
그래서 eth0
원하는 MAC 주소가됩니다.
이미지 수준에서이 작업을 수행하는 것도 좋습니다.