Ситуация
Я использую хост-сервер на базе Debian docker с контейнерами docker. Контейнеры настроены с использованием определенной сети docker и им назначен IP-адрес stati c. Я хочу получить доступ к каждому контейнеру по своему IP-адресу. Сеть настроена на совместное использование диапазона IP-адресов хостов.
Network: 192.168.178.0/24
Host IP: 192.168.178.100
Router IP: 192.168.178.1
Container IP: 192.168.178.140
Сеть docker была создана:
docker network create -d macvlan --subnet=192.168.178.0/24 --gateway=192.168.178.1 -o parent=eno0 dockernet
Контейнеры используют одну и ту же сеть docker и конфигурируются с использованием docker -compose:
gitlab:
image: gitlab/gitlab-ce
restart: always
networks:
dockernet:
ipv4_address: 192.168.178.140
dns:
- 192.168.178.102
- 8.8.8.8
- 4.4.4.4
ports:
- 80:80
- 443:443
- 22:22
Проблема
Теперь с любого компьютера в той же сети я могу пропинговать контейнер docker, но не с самого хоста. Я думал, что это может быть проблема с брандмауэром, но не смог подтвердить (удалив все правила брандмауэра).
Текущая конфигурация таблиц IP:
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy DROP)
target prot opt source destination
DOCKER-USER all -- anywhere anywhere
DOCKER-ISOLATION-STAGE-1 all -- anywhere anywhere
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
DOCKER all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain DOCKER (1 references)
target prot opt source destination
Chain DOCKER-ISOLATION-STAGE-1 (1 references)
target prot opt source destination
DOCKER-ISOLATION-STAGE-2 all -- anywhere anywhere
RETURN all -- anywhere anywhere
Chain DOCKER-ISOLATION-STAGE-2 (1 references)
target prot opt source destination
DROP all -- anywhere anywhere
RETURN all -- anywhere anywhere
Chain DOCKER-USER (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere
Также проверил Debian hosts.deny - он пуст.
Выполнить ping на docker хост-машине:
$ping 192.168.178.140
PING 192.168.178.140 (192.168.178.140) 56(84) bytes of data.
From 192.168.178.100 icmp_seq=1 Destination Host Unreachable
Выполнить пинг с любого другого компьютера:
$ping 192.168.178.140
PING 192.168.178.140 (192.168.178.140): 56 data bytes
64 bytes from 192.168.178.140: icmp_seq=0 ttl=64 time=2.189 ms
64 bytes from 192.168.178.140: icmp_seq=1 ttl=64 time=1.965 ms
Вопросы:
- Любая идея относительно брандмауэра rules, et c.?
- Любая другая идея о том, как настроить docker сеть, чтобы иметь stati c IP для контейнеров?
- Любая другая мысль по этому поводу, почему я не могу получить доступ к моим docker контейнерам с хоста docker?