#mysql #docker
Вопрос:
Я создал образ базы данных MySQL и запустил его в контейнере. Мне бы хотелось, чтобы это было на портах 3406/3407, поэтому я вызываю команду запуска docker следующим образом :
docker run -d -p 3406:3407 --name db ollyw123/shape-shop-db:latest
Если я посмотрю на свои контейнеры, это будет выглядеть так :
C:Usersowatkins.ext>docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b907f878f82b ollyw123/shape-shop-db:latest "docker-entrypoint.s…" 12 minutes ago Up 12 minutes 3306/tcp, 33060/tcp, 0.0.0.0:3406->3407/tcp db
Я бы очень хотел подключиться к своей базе данных сейчас, но, похоже, мой URL-адрес не работает.
Вот как выглядит мой URL-адрес :
jdbc:mysql://localhost:3406/db
Комментарии:
1. Вы перенастроили порт базы данных, используемый контейнером MySQL, чтобы он был
3407
? В противном случае, я бы ожидалdocker run ... -p 3406:3306 ...
.2. я просто экспериментировал с разными номерами портов. Я знаю, что 3306/7 как-то особенный для MySQL, но я просто хотел попробовать его с разными номерами портов
3. Так что используйте
.. 3406:3306
, как сказал @Turing85.. И проверьте, как работают порты в докере: docs.docker.com/config/containers/container-networking4. И, возможно, прочтите введение о портах в целом. Обычно приложение не «волшебным образом открывает порты», но имеет четко определенные порты, и каждый порт имеет четкую функцию.
5. хорошо, я думаю, что так и сделаю . спасибо за советы.
Ответ №1:
Порт mysql по умолчанию 3306
отсутствует 3407
, поэтому вам следует использовать переадресацию портов с 3306
docker run -d -p 3406:3306 --name db ollyw123/shape-shop-db:latest