Как настроить статический ip для контейнера Docker с созданным вручную мостом - PullRequest
0 голосов
/ 17 октября 2018

У меня есть несколько ПК (хостов) в локальной сети, и я хочу, чтобы на этих хостах были созданы док-контейнеры, чтобы свободно общаться друг с другом (а также с хостами).

Я создал пользовательские мосты (не через докер)сети создают, они создаются вручную) на хостах.Мой netplan выглядит примерно так (для одного из хостов каждый хост имеет одинаковые настройки, но с разными IP-адресами для br0):

    version: 2
    renderer: networkd
    ethernets:
            enp0s31f6:
                    dhcp4: no
                    dhcp6: no
    bridges:
            br0:
                    interfaces: [enp0s31f6]
                    dhcp4: no
                    addresses: [192.168.101.11/24]
                    gateway4: 192.168.101.1
                    nameservers:
                            addresses: [192.168.1.1]
                    parameters:
                            forward-delay: 0
                            stp: false

Я также изменил /etc/docker/daemon.json докера и добавил:

{
        "bridge":"br0"
}

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

1) Сначала я попытался использовать

sudo docker run -i -t ubuntu:18.04 /bin/bash

Докер создаст для меня фиксированный статический IP-адрес, но начиная с 192.168.101.1 (который является IP-адресом моего внешнего шлюза), поэтому этот IP-адрес не работает.

Я ввожу команду еще раз, он создаст для меня второй контейнер с IP 192.168.101.2, и этот IP работает!

2) Я пытался использовать конвейер (https://github.com/jpetazzo/pipework/blob/master/pipework)

sudo pipework br0 container-id 192.168.101.20/24@192.168.101.1

Эта команда работаети создаст eth1 в моем док-контейнере с IP-адресом 192.168.101.20.

Если я использую ifconfig в контейнере, я увижу как eth0 (с IP 192.168.101.1, созданным docker), так и eth1(с IP 192.168.101.20). Хотя 192.168.101.20 работаетчасть eth0 слишком подозрительна, и я не уверен, будет ли она мешать моему реальному шлюзу в локальной сети.

Мой вопрос заключается в следующем.

С этим вручную созданным br0, чтонаилучший способ назначить статический IP-адрес контейнера Docker?Трубопровод, кажется, работает, но мне все еще нужно удалить eth0.Разве нельзя сообщить докеру просто изменить IP-адрес eth0?Или можно разрешить конвейеру напрямую изменять настройку eth0 в контейнере Docker?

Я пытался много искать, но никто не задавал похожие вопросы.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...