Перейти к содержимому
Главная страница » Запуск MS SQL в Docker

Запуск MS SQL в Docker

В этом руководстве я покажу, как запустить базу данных MS SQL Server внутри Docker контейнера.

Одним из главных преимуществ запуска такого приложения, как MS SQL Server, в контейнере является отсутствие необходимости в установке.

Экземпляр базы данных SQL Server может быть запущен сразу после запуска Docker контейнера. Ещё одним большим преимуществом является то, что образ контейнера всегда один и тот же при каждом запуске. Такие приложения, как SQL Server, сохраняют данные за пределами Docker контейнера, используя внешнее хранилище.

Хотя запуск базы данных внутри контейнера может быть неидеальным решением для производственной среды, он может отлично подойти для разработки. С помощью контейнеров (в нашем случае мы используем Docker для настройки, сборки и запуска контейнеров) мы можем быстро и последовательно создавать базу данных с нуля. Это может быть удобно для обмена конфигурациями баз данных и подключения разработчиков.

Microsoft SQL Server находится в Топ — 5 рейтинга баз данных по данным Stackoverflow Developer Survey 2023.

Microsoft SQL Server — это система баз данных, которая хранит структурированные, частично структурированные и неструктурированные данные. Она поддерживает такие языки, как Python, и помогает извлекать данные в разных форматах из разных источников, синхронизировать их и поддерживать согласованность. База данных обеспечивает контролируемый доступ к данным, делая SQL Server более безопасным и обеспечивая соответствие нормативным требованиям.

Образ MS SQL Server

Не так давно сама мысль о том, чтобы запустить, не говоря уже о разработке, приложение или сервис .NET на какой-либо платформе, отличной от Windows, казалась нелепой. Но с учётом того, что Microsoft сейчас уделяет особое внимание открытому исходному коду, те времена кажутся далёким прошлым.

Начиная с 17 версии стала доступна установка Microsoft SQL Server на Linux, а значит его можно развернуть и в docker контейнере. Кроме того официальный образ Docker контейнера SQL Server для Linux доступен в реестре контейнеров Microsoft.

Запуск MS SQL в Docker

Для того, чтобы извлечь образ контейнера SQL Server 2022 (16.x) для Linux из реестра контейнеров Microsoft, выполним команду:

sudo docker pull mcr.microsoft.com/mssql/server:2022-latest

Эта команда загружает последнюю версию образа контейнера Linux для SQL Server 2022, так как используется последняя версия тега. Однако на Docker Hub доступно несколько образов SQL Server. Каждый образ SQL Server Docker содержит полностью установленный и готовый к работе экземпляр SQL Server.

Образы других версий MS SQL Server:

  • 2022-latest
    docker pull mcr.microsoft.com/mssql/server:2022-latest
  • 2019-latest
    docker pull mcr.microsoft.com/mssql/server:2019-latest
  • 2017-latest
    docker pull mcr.microsoft.com/mssql/server:2017-latest

Для запуска контейнера выполним команду docker run:

sudo docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD= TempPa55wd#" \
  -p 1433:1433 --name sql2022 --hostname sql2022 \
  -d mcr.microsoft.com/mssql/server:2022-latest
  • команда docker run для запуска образа контейнера
  • Далее используется переключатель «-e» для указания двух различных пар ключевых слов среды.
    • Сначала ACCEPT_EULA=Y позволяет вам принять лицензионное соглашение. Это обязательно.
    • Далее, переменная среды MSSQL_SA_PASSWORD= позволяет указать пароль «SA» (администратора системы SQL Server). Здесь важно отметить, что пароль SA должен соответствовать требованиям SQL Server к сложности пароля, иначе контейнер не запустится.
  • Далее параметр -p позволяет сопоставить TCP-порт на хосте (первое значение) с TCP-портом в контейнере (второе значение). Здесь вы можете видеть, что они оба используют порт SQL Server по умолчанию 1433.
  • Переключатель «–name» не является обязательным, но он позволяет задать собственное имя контейнера вместо использования случайно сгенерированного имени.
  • Аналогичным образом, параметр «–hostname» также не является обязательным, но он позволяет указать собственное имя хоста контейнера. Если вы не укажете имя хоста, имя хоста контейнера по умолчанию будет соответствовать идентификатору контейнера.
  • Переключатель «-d» указывает на то, что контейнер будет работать в фоновом режиме. Если вы не укажете его, то контейнер будет работать в вашем интерактивном сеансе терминала, фактически останавливая все остальные действия в этом сеансе до завершения работы контейнера.
  • Наконец, последний параметр указывает образ контейнера SQL Server Docker, который вы хотите использовать.

После запуска контейнера Docker вы можете проверить запущен ли контейнер с MS SQL:

docker ps -a

Запуск MS SQL c помощью Docker — compose

Для автоматизации запуска приложения и базы данных MS SQL необходимой для его работы, можно использовать инструмент docker — compose, файл запуска базы данных docker-compose.yml будет выглядеть следующим образом:

version: "3.4"
services:
  db:
    image: mcr.microsoft.com/mssql/server
    ports:
      - 1434:1433
    environment:
      ACCEPT_EULA: Y
      SA_PASSWORD: ${SA_PASSWORD}
    volumes:
      - data:/var/opt/mssql
volumes:

Подключение к MS SQL в Docker

Вы можете подключиться к экземпляру SQL Server, работающему в контейнере, точно так же, как к любому другому экземпляру SQL Server. Однако у вас есть возможность подключиться как изнутри контейнера, так и снаружи.

Чтобы подключиться к экземпляру SQL Server, работающему в контейнере Docker, с помощью внешнего клиентского инструмента, такого как SSMS, вам необходимо знать IP-адрес контейнера. Каждый контейнер будет иметь уникальный IP-адрес, как и виртуальная машина. Вам необходимо либо зарегистрировать IP-адрес контейнера и имя хоста в вашем DNS, либо подключиться, используя исходный IP-адрес контейнера. Просто использовать IP-адрес, как правило, проще.

Созданный контейнер открывает порт (с порта 1433 внутри контейнера на порт 1433 на хост-компьютере), на котором прослушивается SQL SERVER. Затем я открываю Sql Server Management Studio (SSMS), ввожу учетные данные и подключаюсь к SQL SERVER, размещенному в Docker.

Во всех образах Docker для SQL Server установлены инструменты командной строки SQL Server (mssql-tools), поэтому вы можете запустить интерактивный сеанс с помощью docker exec для запуска bash, а затем подключиться с помощью инструментов командной строки.

Для получения IP адреса контейнера используем команду:

sudo docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}’ ab

172.17.0.2

Мы рассмотрели простейший пример запуска Docker контейнера с MS SQL, но для серьезных задач нужно гораздо больше, чем просто запустить SQL SERVER в Docker. 
Вы можете настроить SQL Server (например, с помощью инструмента mssql-conf), подключить тома, чтобы создать постоянное хранилище для пользовательской базы данных (между перезапуском сеанса Docker-контейнера), запустить Docker-контейнер SQL SERVER в частной сети и т.д.

Ссылки

How to Install SQL Server Containers on Linux Using Docker

SQL SERVER and Docker

How to Run Microsoft SQL in minutes using Docker Desktop

Running SQL Server on Linux with Docker

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *