В настоящее время я нахожусь в процессе изучения Docker (использую его в Windows и Linux), и есть одна вещь, которую я не могу понять, и я думаю, что это лучше объяснить на примере.
Я запускаю открытые порты контейнера MySQL и затем подключаюсь к нему через клиент MySQL, такой как MySQL Workbench. В Linux / Ubuntu я могу подключиться к БД, работающей внутри контейнера, по ее IP-адресу, который я получаю, выполнив:
docker inspect CONTAINER_NAME
Это имеет смысл для меня, именно так я бы подключился к базе данных, работающей на сервере.
Однако в Windows этот подход не работает. Я на самом деле должен подключиться, localhost
а не IP-адрес контейнера. Я понимаю, что это как-то связано с тем, что в Windows контейнеры работают внутри виртуальной машины Linux, но в этом случае я должен использовать IP-адрес виртуальной машины для подключения к ней.
Может ли кто-нибудь объяснить мне, почему это работает так, как работает? Я изо всех сил пытаюсь понять это (я все еще младший разработчик), и я бы лучше понял, как это работает, чем просто запоминать команды / IP-адреса для разных ОС.
localhost:3306
подключается к[CONTAINER_NAME]:3306
. Но MySQL по умолчанию нигде не привязывается к0.0.0.0
viabind-address: 0.0.0.0
inmy.cnf
в контейнере. Или пользовательские разрешения для MySQL подключеныlocalhost
вместо подстановочного знака%
. Каково именно ваше сообщение об ошибке?