У меня есть несколько ПК (хостов) в локальной сети, и я хочу, чтобы на этих хостах были созданы док-контейнеры, чтобы свободно общаться друг с другом (а также с хостами).
Я создал пользовательские мосты (не через докер)сети создают, они создаются вручную) на хостах.Мой 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?
Я пытался много искать, но никто не задавал похожие вопросы.
Спасибо.