Контейнер обратного прокси Docker в мостовой сети, указывающий на контейнер в сети Macvlan
Прежде всего: я знаю об этом: Невозможно получить доступ к контейнерам докера с хоста через сеть Macvlan
Я использую настройку хоста с одним докером (не боюсь, но это не имеет значения).
По разным причинам я использую контейнер почтового сервера (poste) в сети Macvlan, так как мне нужно иметь IP-адрес в локальной сети (межсетевой экран, фильтрация спама, эксперименты). Контейнер почтового сервера также содержит веб-сервер и webui. Я также хочу, чтобы мой контейнер обратного прокси (в сети docker0) указывал на webui моего почтового сервера.
Есть ли обходной путь для этого, не используя 2 сети, добавленные в мой контейнер почтового сервера? Например, добавив маршрут? В настоящее время я использую вторую сеть в качестве решения для моей ситуации. Итак, запустив # docker network connect docker0 containername
после запуска контейнера, где docker0 - внутренняя сеть докеров 172.17.0.0/16.
Тем не менее, это создает некоторые проблемы с безопасностью, imho. хотя я мог бы ограничить доступ через мостовую сеть к почтовому контейнеру только обратным прокси-контейнером?
У меня есть другой путь для изучения, когда я использую второй адаптер eth на хосте
сетевые адаптеры хоста:
- eth0: 10.10.0.16/16
- eth1: 10.10.0.17/16
Когда я делаю # docker network inspect br0
это результат. br0 - это имя сети macvlan.
[
{
"Name": "br0",
"Id": "beb3548b7a4a4fdaba6c3fa2771ea7a8511d44b0e2545abc9b2f7d8ed922",
"Created": "2018-03-09T17:48:09.444567623+01:00",
"Scope": "local",
"Driver": "macvlan",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "10.10.0.0/16",
"Gateway": "10.10.0.99",
"AuxiliaryAddresses": {
"server": "10.10.0.16"
}
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"1c215b70764d198ce95b702f49b1f263a7a68a308f13db2907921d8bd4d9": {
"Name": "poste",
"EndpointID": "7d560d531e4f88472b7cbf96b5f460964bf12bdd478f88840475732215ff",
"MacAddress": "02:42:0a:0a:20:f2",
"IPv4Address": "10.10.32.242/16",
"IPv6Address": ""
}
},
"Options": {
"parent": "br0"
},
"Labels": {}
}
]
И тогда я могу использовать
# ip link add link eth1 dev eth1m type macvlan mode bridge
# ip link set eth1m up
# ip route add 10.10.32.242 dev eth1m
Теперь я могу пинговать / связываться с контейнером (даже если подключена только сеть Macvlan) с хоста. Проблема в том, что я до сих пор не могу дозвониться до 10.10.32.242 из моего контейнера обратного прокси (который, как уже говорилось, находится в сети docker0).