Я создал два контейнера в одной сети и один из них был запущен экземпляр сервера Sql. В другом контейнере (с помощью SQL Tools) я могу подключиться к SQL с помощью IP-адреса, но если я перейду к имени машины, это не сработает.
Я уже пробовал сделать ping машину и dns решает правильный IP, я также пробовал dnslookup, и он также работает. Кто-нибудь знает, как это исправить?
Полный тестовый сценарий:
-
Создана новая сеть
docker network create --driver=bridge specsnet
-
Запустить SQL Container
docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Password!123456' -p 1401:1433 -d --name=TestDBServer --net=specsnet --rm microsoft/mssql-server-linux:latest
-
Запустить новый контейнер с помощью SQL-инструментов (для проверки соединения)
docker run -it --net=specsnet --rm --entrypoint "bash" mcr.microsoft.com/mssql-tools:latest
-
Загрузите некоторые инструменты для устранения неполадок (в контейнер SQL Tools)
apt-get update | apt-get install telnet -y | apt-get install iputils-ping -y | apt-get install dnsutils -y | apt-get install nmap -y | apt-get install nano -y
-
Проверьте соединение с IP (Success - IP was 172.18.0.2)
sqlcmd -S tcp:172.18.0.2,1433 -U sa -P 'Password!123456'
-
Проверить соединение с именем (Fails)
литий> ол>sqlcmd -S tcp:TestDBServer,1433 -U sa -P 'Password!123456'
Часть
TestDBServer
вашегоsqlcmd
ссылается на так называемый псевдоним сервера. Эти псевдонимы серверов недоступны из-за того, как вы настроили сеть Docker в настоящее время. Если вы переключитесь на Docker compene, чтобы настроить для вас сеть, он должен работать.Альтернативный подход будет заключаться в
--link
вместе с контейнерами.Итак, как сказал Бьорн, я создал файл компоновки докеров, и после выполнения некоторого теста я понял, что проблема не была исправлена.
Затем я начал манипулировать файлом, настраивать свойства и обнаружил, что проблема была в имени контейнера SQL (имя контейнера имеет буквы верхнего регистра). Я установил имя контейнера SQL в "testdbserver", и все сработало нормально.
Файл Docker Compose
Запуск контейнера инструментов SQL в режиме Bash
Выполнение SQL-теста Соединение (работает сейчас)