호스트와 동일한 LAN에서 주소 지정이 필요한 많은 도커 컨테이너가 있습니다. 지금까지 브리지 설정 및 수동으로 IP 할당 및 IP 관리를 통해이 목표를 달성했습니다 . 시작 예제는 다음과 같습니다.
docker run \
--net="none" \ \
--lxc-conf="lxc.network.type = veth" \
--lxc-conf="lxc.network.ipv4 = 192.168.1.3/24" \
--lxc-conf="lxc.network.ipv4.gateway = 192.168.1.254" \
--lxc-conf="lxc.network.link = br0" \
--lxc-conf="lxc.network.name = eth0" \
--lxc-conf="lxc.network.flags = up" \
-d [Docker Image ID]
호스트가 /etc/network/interfaces
(우분투)에 정의 된 브릿지를 갖는 경우 :
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet static
address 192.168.1.2
netmask 255.255.255.0
gateway 192.168.1.254
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
내가 발견 한 이후 농노를 , 나는 DHCP는 IP를 추적 및 컨테이너로 나눠 수 있도록하는 것이, 컨테이너 내에서 자동 검색을 사용하는 동안 이동하는 것을 시도하고있다. 이후 시작 명령을 다음과 같이 변경했습니다.
docker run \
--net="none" \
--lxc-conf="lxc.network.type = veth" \
--lxc-conf="lxc.network.link = br0" \
--lxc-conf="lxc.network.flags = up" \
-d [Docker Image ID]
/bin/bash
그리고 다리는 :
auto br0
iface br0 inet dhcp
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
이로 인해 컨테이너가 시작되었지만 IP가 없었습니다. 그런 다음 Fedora로 전화를 걸어 온라인 게시물 에서 조언 을 얻었습니다 dhclient
. 불행히도 이것은 우분투 기반 컨테이너 내에서 작동하지 않습니다.
다음은 다른 조건에서 발생하는 다음 오류 메시지입니다.
컨테이너 시작
dhclient
을 활성화하면 실행 됩니다--privileged
.dhclient: error while loading shared libraries: libc.so.6: cannot open shared object file: Permission denied
sudo dhclient eth0
없을 때 실행--privileged
RTNETLINK answers: Operation not permitted mv: cannot move '/etc/resolv.conf.dhclient-new.31' to '/etc/resolv.conf': Device or resource busy
실행
sudo dhclient
중이거나dhclient
(인터페이스가 지정되지 않았습니다).즉시 반환되며 여전히 IP 또는 네트워크 연결이 없습니다.
IP를 추적하지 않고 여러 호스트에 컨테이너를 배포 할 수 있도록 도커 컨테이너가 호스트와 동일한 서브넷에서 동적 IP를 가져 오도록하려면 어떻게해야합니까?
추가 정보
- 실행
DOCKER_OPTS="-e lxc"
중/etc/default/docker
- 호스트는 우분투 14.04입니다
- Docker 컨테이너는
from ubuntu:14.04
Dockerfile에서 사용 합니다.