Saya memiliki banyak kontainer buruh pelabuhan yang perlu saya addressable di LAN yang sama dengan host mereka. Sampai sekarang, saya telah mencapai ini dengan menggunakan pengaturan jembatan dan secara manual menetapkan mereka IP , dan mengelola IP sendiri. Contoh startup akan seperti ini:
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]
Dengan host yang mendefinisikan bridge di /etc/network/interfaces
(ubuntu) seperti:
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
Sejak saya menemukan budak , saya telah mencoba untuk pindah menggunakan penemuan otomatis dalam wadah, sehingga DHCP dapat melacak IP dan membagikannya ke wadah. Saya sejak mengubah perintah startup ke:
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
dan jembatan ke:
auto br0
iface br0 inet dhcp
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
Ini mengakibatkan wadah memulai, tetapi tidak memiliki IP. Saya kemudian menerima saran dari sebuah posting online yang berhasil menyelesaikannya dengan Fedora, dengan menelepon dhclient
. Sayangnya ini tidak berfungsi untuk saya dalam wadah berbasis ubuntu.
Di bawah ini adalah pesan kesalahan berikut yang saya dapatkan dalam kondisi yang berbeda:
Berjalan
dhclient
ketika saya telah mengaktifkan--privileged
dalam memulai wadah:dhclient: error while loading shared libraries: libc.so.6: cannot open shared object file: Permission denied
Berjalan
sudo dhclient eth0
saat tidak ada--privileged
RTNETLINK answers: Operation not permitted mv: cannot move '/etc/resolv.conf.dhclient-new.31' to '/etc/resolv.conf': Device or resource busy
Lari
sudo dhclient
ataudhclient
(tidak ada antarmuka yang ditentukan).Segera kembali dan masih belum ada konektivitas IP atau jaringan.
Bagaimana saya bisa mendapatkan buruh pelabuhan untuk mengambil IP dinamis dari subnet yang sama dengan host mereka, sehingga saya bisa menggunakan kontainer di banyak host tanpa melacak IP?
Informasi tambahan
- Lari
DOCKER_OPTS="-e lxc"
masuk/etc/default/docker
- Host adalah Ubuntu 14.04
- Wadah Docker dibuat menggunakan
from ubuntu:14.04
Dockerfile.