2017-02-16 6 views
1

Я хотел установить настраиваемый пул IP-адресов для подсетей контейнеров-докеров. Для этого я последовал за это прекратилось Docker демон, удален интерфейс docker0 и воссоздан с пользовательским NETWORKIDИзменение пула IP-адресов докер-моста

systemctl stop docker 
ip link del docker0 

Подержанного NetworkManager воссоздать виртуальный интерфейс моста docker0 и превратил его в на.

[email protected] ~> nmcli con up <UID> 
[email protected] ~> ip addr 
111: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000 
    link/ether 3e:ff:1b:ce:e4:a4 brd ff:ff:ff:ff:ff:ff 
    inet 172.20.0.1/20 brd 172.20.15.255 scope global docker0 
     valid_lft forever preferred_lft forever 

Теперь, когда я начинаю Docker демона обратно,

[email protected] ~> systemctl start docker 
[email protected] ~> ip addr 
111: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000 
    link/ether 3e:ff:1b:ce:e4:a4 brd ff:ff:ff:ff:ff:ff 
    inet 172.17.0.1/16 scope global docker0 
     valid_lft forever preferred_lft forever 

подсети Я поставил это 172.20.0.1/20, но как только я начинаю Docker демон, подсеть docker0 интерфейса изменяется на 172.17.0.1/16. У меня есть некоторые частные IP-адреса в локальной сети, которые я хочу получить, которые лежат в этой подсети.

Есть ли лучший способ настройки интерфейса моста?

ответ

0

Создав определенную сеть с мостиковыми контейнерами, вы сможете определить IP-адреса, используя эту команду. documentation - хорошая точка входа.

$ docker network create --driver bridge --subnet 172.20.0.1/20 subnet 
$ docker run --name app --network subnet <container> 

все ваши контейнеры должны иметь IP-адреса в выбранной подсети.

Кроме того, official doc описывает, как вы можете создать свое собственное мостовое соединение.

1

Ответ Иордании создает работу подсети, которая затем указывается при запуске приложения на контейнере. Это полезно для ограничения пула IP, используемого при работе с контейнером.

Однако это не помогает ограничить пул IP-интерфейса виртуального моста docker0, созданного демоном докеров. Ответ, который я искал, следующий:

Docker запускает демон, который управляет контейнерами. Этот демон создает интерфейс docker0, который по умолчанию настроен на использование подсети 172.17.0.1/16 для своих операций. Итак, нам нужно настроить демона на использование нужной подсети.

dockerd Используется для запуска демона докеров. У этого есть опция --bid bridge ID. dockerd

dockerd --bid=172.20.0.1/20 

Но большинство систем выполняются докер с использованием соответствующих руководителей служб для достижения этой цели. В таких случаях у докера есть файл конфигурации демона-докера по адресу /etc/docker/daemon.json. Docker linux daemon configuration Так что создайте daemon.json, если он еще не существует и добавьте bip.

{ 
    "bip":"172.30.0.1/20" 
} 
0

Если вы измените подсеть моста docker0, он останется таким же. Для конкретной цели ip используйте новое сетевое создание. docker network create --subnet = 172.20.0.1/20 foo После запуска контейнера в этой сети. docker run -itd --net foo image_name Предположим, хотите ли вы указать конкретный ip для контейнера. используйте docker run -itd --net foo --ip 172.20.0.12 image_name

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