ホストと同じLANで処理する必要があるDockerコンテナがたくさんあります。これまで私はこれを使ってこれを達成してきました。ブリッジを設定し、手動で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
。
さまざまな条件で表示されるエラーメッセージは次のとおりです。
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を追跡することなく複数のホストにコンテナを展開できるように、Dockerコンテナがホストと同じサブネットから動的IPを取得できるようにするにはどうすればよいですか。
追加情報
DOCKER_OPTS="-e lxc"
走る/etc/default/docker
- ホストはUbuntu 14.04です。
- Dockerコンテナは
from ubuntu:14.04
Dockerfileを使用して構築されます。
ベストアンサー1
そうだこれは公開質問ですこれはUbuntuコンテナとApparmorに固有のものです。
bprodoehlは次の回避策を公開しました。
- 権限でコンテナを起動する
--privileged
- dockerfileに次の行を追加します。
RUN mv /sbin/dhclient /usr/sbin/dhclient
- Run を実行すると
dhclient eth0
エラーメッセージが表示されますが、mv: cannot move '/etc/resolv.conf.dhclient-new.29' to '/etc/resolv.conf': Device or resource busy
IP を取得してネットワークを使用できるようになります。