Использование SQL Server Management Studio для удаленного подключения к контейнеру докеров

Контекст: я пытаюсь создать SQL-сервер для разработки, на котором я могу продолжать изучать SQL и использовать Microsoft SQL Server Management Studio (SSMS) для доступа на ПК с Windows.

Итак, у меня есть база данных AdventureWorks, которая находится в Docker-контейнере для MS SQL Server 2017 и работает на компьютере DigitalOcean Ubuntu 16.04. С моего Mac я могу удаленно подключиться к серверу по SSH, получить доступ к контейнеру и запросить базу данных.

Однако я хочу использовать SSMS на своем ПК с Windows и не уверен, как начать подключаться к удаленному устройству. На рисунке ниже нет вариантов указать ключ SSH или даже войти в систему в окне Ubuntu только для доступа к серверу SQL.

enter image description here

Это вообще возможно?

Ответ 1

подключиться через SSMS, используя общедоступный IP-адрес, затем разделитель запятой, а затем порт (xxx.xx.xx.xxx, порт)

Для выполнения этой работы вам также понадобятся учетные данные sa.

Ответ 2

Вы можете использовать localhost ip для локального подключения. В этом случае ввод имени сервера станет 127.0.0.1, порт #

For clarity, I attached image of my SSMS Connection Dialog

Ответ 3

Следующая инструкция этого сайта решила это для меня на контейнерах Windows: https://www.sqlshack.com/sql-server-with-a-docker-container-on-windows-server-2016/ Удалось подключиться к SQL Server мгновенно из SSMS.

Попробуйте, если это также работает на контейнерах Linux, с помощью этой команды:

docker run --name mssqltrek-con1 -d -p 1433:1433 -e sa_password=My$eCurePwd123# -e ACCEPT_EULA=Y microsoft/mssql-server-windows-developer

После этого вы можете получить правильный ip с помощью:

docker inspect -f "{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" mssqltrek-con1

Ответ 4

Я также столкнулся с той же проблемой, когда я пытаюсь подключиться через SSMS, даже я пытался с localhost, 1433 это не помогает мне. введите описание изображения здесь

После некоторых исследований я нашел способ решить эту проблему

  • Откройте Kubernetes, который будет установлен как часть панели инструментов Docker. (мой был победителем 10 дома, который не будет поддерживать гипер-V)
  • нажмите на контейнер SQL, который будет в левой части приложения
  • скопируйте IP-адрес, который будет в правой части приложения
  • использовать IP-адрес с портом, например XXX.XXX.XX.XX, 1433, а также учетные данные в SSMS

введите описание изображения здесь

Ответ 5

В моем случае это была Cisco VPN, которая блокировала хост для подключения к контейнеру IP. Мне пришлось снять флажок "Диспетчер доступа к сети Cisco Any Connect", как показано на рисунке ниже, чтобы он работал. Это гарантирует, что VPN больше не управляет соединением.

enter image description here