Контейнер недоступен из другого контейнера с запуском докера - PullRequest
0 голосов
/ 16 января 2019

Вот ситуация:

Когда я запускаю образ докера MySQL 5.7 локально (docker-compose), используя

container_name: test-mysql-docker  

работает нормально. Моя JDBC-программа в другом док-контейнере может обращаться к контейнеру MySQL через имя_контейнера.

Однако, когда я помещаю этот образ MySQL 5.7 в свою учетную запись концентратора докеров, а затем пытаюсь запустить его в отдельном командном окне, он не работает (см. Команду запуска, которую я использую ниже). Проблема: JDBC-программа, работающая в другом контейнере Docker, не может получить к нему доступ и выдает сообщение об ошибке «три раза».

Таким образом, я думаю, что у меня неправильный синтаксис в моей команде запуска ниже. После загрузки MySQL с помощью команды run, приведенной ниже, я могу получить доступ к контейнеру MySQL из внешнего докера, так что он работает, и нужные мне данные находятся там. Поэтому я думаю, что это просто имя_контейнера, это неправильно, но я ищу экспертов здесь, чтобы дать мне идеи.

Вот моя команда запуска, которая успешно выводит образ MySQL 5.7 (доступен вне докера, но не из другого контейнера докера, как при локальном запуске с использованием «docker-compose up»)

$ docker run -it -p 3307:3306 --name test-mysql-docker -v /Users/.../ZipCodeLookup.sql:/docker-entrypoint-initdb.d/ZipCodeLookup.sql -e MYSQL_ROOT_PASSWORD=thepass docker-account/mysql:5.7 

Я предполагаю запустить докер-контейнер из докер-хаба, мне нужно указать все параметры вручную, как команда выше (что мне не нужно делать при использовании docker-compose).

Может ли кто-нибудь увидеть, что не так или возможно отсутствует в приведенной выше команде run, которая помешала бы другому контейнеру получить доступ через JDBC к контейнеру MySQL с использованием «test-mysql-docker» в качестве имени контейнера?

Заранее большое спасибо,

1 Ответ

0 голосов
/ 16 января 2019

Если вы правильно используете test-mysql-docker:3306 в качестве URL для доступа к БД из JDBC, вам необходимо подключить их к той же пользовательской сети. Мостовая сеть по умолчанию не работает.

docker network create mynet
docker run -d --net mynet -p 3307:3306 --name test-mysql-docker -v /Users/.../ZipCodeLookup.sql:/docker-entrypoint-initdb.d/ZipCodeLookup.sql -e MYSQL_ROOT_PASSWORD=thepass docker-account/mysql:5.7 
docker run -it --net mynet JDBC
...