ฉันมีคอนเทนเนอร์นักเทียบท่าจำนวนมากที่ฉันต้องการแอดเดรสบน 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
(Ubuntu) ดังนี้:
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
โดยโทร น่าเสียดายที่นี่ใช้ไม่ได้กับฉันในตู้ที่ใช้ Ubuntu
ด้านล่างนี้เป็นข้อความแสดงข้อผิดพลาดที่ฉันได้รับภายใต้เงื่อนไขต่าง ๆ :
ทำงาน
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
- โฮสต์คือ Ubuntu 14.04
- คอนเทนเนอร์ของนักเทียบท่าสร้างขึ้นโดยใช้
from ubuntu:14.04
ใน Dockerfile