в первую очередь: я знаю об этом: Невозможно получить доступ к контейнерам докеров с хоста через сеть 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).