Как получить доступ к контейнеру Docker на хосте по имени (не IP)? - PullRequest
0 голосов
/ 17 июня 2019

Я хочу запустить сервер MS SQL (образ докера: microsoft / mssql-server-windows-developer) в контейнере докера. Использование Windows на хосте и контейнере. После этого база данных должна быть доступна с хоста (используя SQL Management Studio) под полезным именем (чтобы инструкции можно было использовать повторно). Однако Docker генерирует, казалось бы, случайный IP-адрес, который не так полезен, особенно потому, что он сбрасывается при каждом вызове для запуска.

Итак, я хотел бы дать контейнеру имя хоста, доступное с хост-машины (например, SQL Management Studio). Я бы хотел избежать здесь простого IP, но этого было бы достаточно, если бы не было лучшего решения.

Создание сети в Docker не сработало, так как эта функциональность, видимо, поддерживается только в Linux.

- сетевой псевдоним также не удался.

Команда запуска выглядит так:

docker run -d -p 1433:1433 -e sa_password=1234qwerT -e ACCEPT_EULA=Y --name docker_sql microsoft/mssql-server-windows-developer

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

Согласно комментариям bluescores и натыкаясь на этот связанный вопрос , я попытался и проверил, что подключение к localhost возможно - поэтому на самом деле нет необходимости настраивать имя для Контейнер-sql-сервер или настроить его IP.

Общая проблема может сохраняться для других приложений, но для того, чего я хочу достичь в настоящее время, достаточно localhost.

0 голосов
/ 17 июня 2019

Это очень похоже на этот вопрос здесь: Как получить IP-адрес контейнера Docker от хоста?

Я думаю, что вы можете достичь того, что вы хотите, с помощью 2-х шаговprocess:

  1. Получите идентификатор контейнера для вашего контейнера как часть вашей команды docker run.
  2. Используйте docker inspect для получения IP-адреса контейнера.

Если вы действительно не хотите использовать IP-адрес, то вы всегда можете добавить IP-адрес в файл хоста, но простое использование IP-адреса в качестве переменной оболочки должно быть почти таким же полезным.

Так, например, из оболочки bash:

CID=$(docker run -d ubuntu /bin/sh -c 'while /bin/true; do sleep 10 ; done')
IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $ID)

Теперь вы можете использовать $IP в скриптах, как считаете нужным.(Замените строку CID=... любой командой docker run, которую вы используете для запуска контейнера).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...