Что может быть причиной Docker контейнеров не в состоянии подключиться через порты к хост-системе?Docker: как открыть порты на главной машине?
В частности, я пытаюсь подключиться к серверу MySQL, который запущен на главной машине Docker (172.17.0.1
на мосту Докер). Однако по какой-то причине порт 3306
всегда закрыт.
Шаги по воспроизведению довольно просты:
- Настройка MySQL (или любой другой сервис) для прослушивания
0.0.0.0
(bind-address=0.0.0.0
в~/.my.cnf
) перспективе
$ docker run -it alpine sh # apk add --update nmap # nmap -p 3306 172.17.0.1
Это Это. Независимо от того, что я делаю это всегда будет показывать
PORT STATE SERVICE
3306/tcp closed mysql
Я пробовал то же самое с Ubuntu образ, хост-машине Windows, и другие порты, а также.
Я хотел бы избежать --net=host
, если это возможно, просто для правильного использования контейнеризации.
Посмотрите на этот ответ: http://stackoverflow.com/a/24326540/645002 Он очень тщательный, должен получить вас, где вам нужно быть – jaxxstorm
@Frap Да, это отличный ответ, а также где я получил большинство информации о том, как использовать режим моста и получить IP-адрес хоста и т. д. Но, к сожалению, это не помогло с этой проблемой. – Opossum
Без полностью borking автоматического моста настройки по докер (предполагая, что вы не Iptables мазохист), и за исключением --net = хост ..... Передайте записи пользовательских Dns для хоста через --add-хозяина. – user2105103