СЦЕНАРИЙ:
Привет, я запускаю docker compose с контейнерами.Этот файл compose работает как charm на локальном рабочем столе docker в Windows 10. Я настроил свою собственную сеть с сетью driver bridge.
Теперь я хочу запустить docker compose на внешнем сервере с ubuntu vm.У меня удаленное соединение шпаклевки с сервером.Когда я запускаю docker-compose up
, все мои службы запускаются успешно.У меня также работает Portainer для управления графическим интерфейсом.
ПРОБЛЕМА: Лика Я сказал, все мои службы работают.Единственное отличие от моих локальных настроек заключается в том, что я запускаю portainer как один контейнер.Я не могу подключиться к portainer с помощью моего браузера и проверить всю настройку.Но когда я хочу вызвать свой контейнер expose, я не могу получить соединение и получить ошибку соединения не удалось.Когда я смотрю на столбец IP-адресов в portainer в спецификации Containers, я вижу, что у portainer есть другой ip, чем у моих контейнеров составления docker.Таким образом, у portainer 172.17.xxx, а все остальные контейнеры начинаются с 172.20.xxx. Очевидно, что мои открытые порты в моей частной сети не доступны мостовой сети хоста.
Что я ожидаю Я хочу, чтобы мои открытые порты были доступны через ip моей виртуальной машины, как мой экземпляр portainer.
Мысли Я довольно новичок в докере, поэтому я проверил docs и подумал из-за описания:
Внутри пользовательской мостовой сети связывание не поддерживается.Вы можете открывать и публиковать порты контейнеров в контейнерах в этой сети.Это полезно, если вы хотите сделать часть сети моста доступной для внешней сети.
.. этот мост, поскольку сетевой драйвер будет соединять мою сеть с локальным узлом подключения к Интернету.
Вопрос: Что-то не так, когда я запускаю portainer отдельно от моей композиции?Есть ли что-то еще, что нужно иметь в виду, когда я запускаю свою композицию на внешнем сервере, а не на локальном хосте в точке сетевого взаимодействия?
compsose network cfg:
networks:
my_net:
driver: bridge
, и моя составная версия - 2.1
ОБНОВЛЕНИЕ: Docker ps сообщает все о запуске и проверке заражения docker для контейнера, к которому я хочу подключиться через Интернет:
"NetworkSettings": {
"Bridge": "",
"SandboxID": "9e1e335ab30f1f4d3f690e8902e06523fa095e7d8bshddkdksis7d66s7sjdjd",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {
"7778/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "7778"
}
]
},
"SandboxKey": "/var/run/docker/netns/9e1e386ttf56",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "",
"Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "",
"IPPrefixLen": 0,
"IPv6Gateway": "",
"MacAddress": "",
"Networks": {
"my_net": {
"IPAMConfig": null,
"Links": null,
"Aliases": [
"3cb72e02c43b",
"usermanagement-service"
],
"Gateway": "172.20.xx.x",
"IPAddress": "172.20.xx.xx",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"DriverOpts": null
}
}
}
}