2016-04-28 7 views
0

Я пытаюсь настроить сетевой мост в Docker, который подключен к внешнему интерфейсу на главной машине.Внешний статический IP-адрес с Docker

Я бегу Docker 10.11 на CentOS 7

Этот блог объясняет это хорошо ...

https://forums.docker.com/t/public-accessible-ip-in-container-like-bridge-network-in-virtualbox/3668/5

Вот команда, которую я докер

Я создал мост в соответствии с команда здесь:

sudo docker network create \ 
    --driver bridge \ 
    --subnet=192.168.33.0/24 \ 
    --gateway=192.168.33.10 \ 
    --opt "com.docker.network.bridge.name"="docker1" \ 
    shared_nw 

Затем я добавил это к внешнему интерфейсу

sudo brctl addif docker1 eth1 

Я создал контейнер и назначил ему IP в сети.

Я могу выполнить ping без проблем с самого хоста, но создание моста докеров не делает ip назначенным мосту или назначенному контейнеру, доступному с другого компьютера в сети, а также сама сеть недоступен.

Кажется, я чего-то не хватает. Я думал, что мост должен позволить контейнерам использовать ту же подсеть, что и хост.

IP адр

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 
    inet 127.0.0.1/8 scope host lo 
     valid_lft forever preferred_lft forever 
    inet6 ::1/128 scope host 
     valid_lft forever preferred_lft forever 
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master docker1 state UP qlen 1000 
    link/ether 00:50:56:aa:41:10 brd ff:ff:ff:ff:ff:ff 
    inet6 fe80::250:56ff:feaa:4110/64 scope link 
     valid_lft forever preferred_lft forever 
3: docker1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
    link/ether 02:42:d9:cc:37:ff brd ff:ff:ff:ff:ff:ff 
    inet 192.168.33.10/24 scope global docker1 
     valid_lft forever preferred_lft forever 
    inet6 fe80::42:d9ff:fecc:37ff/64 scope link 
     valid_lft forever preferred_lft forever 
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN 
    link/ether 02:42:5c:8a:0f:57 brd ff:ff:ff:ff:ff:ff 
    inet 172.17.0.1/16 scope global docker0 
     valid_lft forever preferred_lft forever 

brctl показать

bridge name bridge id  STP enabled interfaces 
docker0  8000.02425c8a0f57 no  
docker1  8000.0242d9cc37ff no  eth1 
+1

Перед добавлением 'eth1' в мост, имеет ли он IP-адрес в сети 192.168.33.0/24? Вы можете достичь этого адреса с других хостов в сети? Есть ли в этой сети другие хосты (в частности, используя ips из того же диапазона)? – larsks

+0

Нет ... адрес удален из адаптера, и я удалил сценарий времени загрузки, чтобы он не настраивал и не брал его. –

+0

Справа. Но я предлагал выполнить тест, который выводит Docker из уравнения, чтобы мы могли убедиться, что это вопрос конфигурации Docker, и вопрос базовой конфигурации системы. Может быть, вы могли бы установить это и сообщить нам результат? – larsks

ответ

0

Хорошо ... Я думаю, что я нашел то, что я делаю неправильно. По-видимому, после того, как докер создает мост с помощью команды создания докерной сети, вы должны добавить мост к сценарию запуска для любого дистрибутива, чтобы он воспитывался с тем, что управляет сетью. В Ubuntu это потребовало добавления моста в файл/etc/network/interfaces, а для CentOS это потребовало добавления файла конфигурации в папку/etc/sysconfig/network-scripts.

После перезагрузки сетевой службы (или перезагрузки) все работает нормально.