2015-11-25 4 views
4

Моя системаКак начать докер без таблицы nat?

Linux in28-051 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u3 (2015-08-04) x86_64 GNU/Linux 

Но нац таблица отключена в нашей компании machine.So, когда я бегу Docker -d, вопрос

[email protected]:~# docker -d 
INFO[0000] +job init_networkdriver() 
INFO[0000] +job serveapi(unix:///var/run/docker.sock) 
INFO[0000] Listening for HTTP on unix (/var/run/docker.sock) 
Unable to enable network bridge NAT: iptables failed: iptables --wait -t nat -I POSTROUTING -s 172.17.42.1/16 ! -o docker0 -j MASQUERADE: iptables v1.4.21: can't initialize iptables table `nat': Table does not exist (do you need to insmod?) 
Perhaps iptables or your kernel needs to be upgraded. 
(exit status 3) 
INFO[0000] -job init_networkdriver() = ERR (1) 
FATA[0000] Shutting down daemon due to errors: (exit status 3) 

Итак, есть ли способ запустить докер без таблицы nat?


Update: Я знаю, что могу работать докер нормально, когда я включаю физ модуль, но вопрос включить нац имеет плохое влияние на пропускную способность сети наших машин. Так что я хочу знать, каким-либо образом я могу использовать докер без модуля nat? Или любой может объяснить, почему докер должен использовать nat-модуль.

ответ

2

ОК, я, наконец, нашел ответ. Используйте следующую команду, чтобы запустить докер без iptables.

docker -d --iptables=False & 
+0

Да. Имейте в виду, что вам придется управлять своими портами и управлять ими самими, а в некоторых случаях это может не сработать: https://fralef.me/docker-and-iptables.html – Rico

+0

@Rico, можете ли вы сказать мне, в каком случае это может не работать? Заранее спасибо. – yunfan

+0

@yunfan привет, пожалуйста, скажите, какая версия - ваш докер? нет опции -iptables для докеров 1.7.1 ... – hihell

1

Похоже, вам не хватает вашего Linux-модуля nat. В сети Docker используются iptables для маршрутизации материала в ваши контейнеры.

Вы можете проверить под управлением любой из них:

lsmod | grep nat 
lsmod | grep ip 
grep -i iptables /boot/config-`uname -r` 
modprobe /lib/modules/<kernel-version>/kernel/net/ipv4/netfilter/iptable_nat.ko 

Вам может понадобиться пересобрать ядро ​​с поддержкой nat Iptables.

Похожий вопрос/ответ: https://serverfault.com/questions/593263/iptables-nat-does-not-exist

+1

Я знаю, что мне нужен модуль nat, я сказал, что модуль nat отключен в наших машинах. Так что я хочу знать, есть ли способ начать докер без nat? – yunfan

Смежные вопросы