Развертывание SQL Azure для пограничных вычислений с помощью Docker

Важно!

Azure SQL Edge больше не поддерживает платформу ARM64.

Это краткое руководство описывает использование Docker для извлечения и запуска образа контейнера SQL Azure для пограничных вычислений. Затем мы подключимся при помощи sqlcmd для создания первой базы данных и выполнения запросов.

Этот образ состоит из SQL Для пограничных вычислений на основе Ubuntu 18.04. Он может использоваться с Dосker Engine 1.8 и более поздних версий на Linux.

контейнеры Azure SQL Edge не поддерживаются на следующих платформах для рабочих нагрузок:

  • Windows
  • macOS
  • Azure IoT Edge для Linux в Windows (EFLOW)

Предварительные требования

  • Docker Engine 1.8 и более поздних версий на любом поддерживаемом дистрибутиве Linux. Дополнительные сведения см. в разделе Установка Docker. Так как образы SQL Для пограничных вычислений основаны на Ubuntu 18.04, рекомендуется использовать узел Docker ubuntu 18.04.
  • Драйвер хранилища overlay2 Docker. По умолчанию он используется большинством пользователей. Если вы обнаружите, что не используете этот поставщик хранилища и нуждаетесь в изменениях, см. инструкции и предупреждения в документации по Docker по настройке наложения2.
  • Не менее 10 ГБ места на диске.
  • Не менее 1 ГБ ОЗУ.
  • Требования к оборудованию для SQL Azure для пограничных вычислений.

Примечание

Для команд Bash в этой статье используется sudo. Если вы не хотите использовать sudo для запуска Docker, можно настроить группу Docker и добавить в нее пользователей. Дополнительные сведения см. в статье Действия после установки для Linux.

Извлечение и запуск образа контейнера

  1. Извлеките образ контейнера SQL Azure для пограничных вычислений из Реестра контейнеров Майкрософт.

    sudo docker pull mcr.microsoft.com/azure-sql-edge:latest
    

    Предыдущая команда извлекает последний образ контейнера SQL Edge. Чтобы просмотреть все доступные образы, перейдите на страницу центра Docker azure-sql-edge.

  2. Чтобы запустить образ контейнера с помощью Docker, используйте следующую команду из оболочки Bash:

    • Запустите экземпляр Azure SQL Edge, работающий как выпуск Developer:

      sudo docker run --cap-add SYS_PTRACE -e 'ACCEPT_EULA=1' -e 'MSSQL_SA_PASSWORD=yourStrong(!)Password' -p 1433:1433 --name azuresqledge -d mcr.microsoft.com/azure-sql-edge
      
    • Запустите экземпляр Azure SQL Edge, работающий в качестве выпуска Premium:

      sudo docker run --cap-add SYS_PTRACE -e 'ACCEPT_EULA=1' -e 'MSSQL_SA_PASSWORD=yourStrong(!)Password' -e 'MSSQL_PID=Premium' -p 1433:1433 --name azuresqledge -d mcr.microsoft.com/azure-sql-edge
      

    Важно!

    Пароль должен соответствовать политике паролей microsoft База данных SQL Engine по умолчанию, в противном случае контейнер не сможет настроить подсистему База данных SQL и перестанет работать. По умолчанию пароль должен быть не короче восьми символов и содержать символы трех из следующих четырех групп: прописные буквы, строчные буквы, десятичные цифры, специальные символы. Проверить журнал ошибок можно, выполнив команду docker logs.

    В следующей таблице представлено описание параметров в предыдущих docker run примерах:

    Параметр Описание
    -e "ACCEPT_EULA=Y" Присвойте переменной ACCEPT_EULA любое значение, чтобы подтвердить свое согласие с лицензионным соглашением. Обязательный параметр для образа SQL Для пограничных вычислений.
    -e "MSSQL_SA_PASSWORD=yourStrong(!)Password" Укажите собственный надежный пароль, который содержит не менее восьми символов и соответствует требованиям к паролю Azure SQL Edge. Обязательный параметр для образа SQL Для пограничных вычислений.
    -p 1433:1433 Сопоставление TCP-порта среды узла (первое значение) с TCP-портом в контейнере (второе значение). В этом примере SQL для пограничных вычислений прослушивает TCP 1433 в контейнере, и это предоставляется порту 1433 на узле.
    --name azuresqledge Укажите свое имя для контейнера вместо сгенерированного случайным образом. При запуске нескольких контейнеров нельзя использовать одинаковые имена.
    -d Запустите контейнер в фоновом режиме (управляющая программа)

    Полный список всех Azure SQL переменных среды Edge см. в статье Настройка Azure SQL Edge с помощью переменных среды. Вы также можете использовать файл mssql.conf для настройки контейнеров SQL Для пограничных вычислений.

  3. Для просмотра ваших контейнеров Docker используйте команду docker ps.

    sudo docker ps -a
    
  4. Если в столбце STATUS отображается состояние "Вверх", SQL Для пограничных вычислений выполняется в контейнере и прослушивается порт, указанный в столбце ПОРТЫ . Если в столбце СОСТОЯНИЕ для контейнера SQL Edge отображается значение Выход, см. раздел Устранение неполадок документации по Azure SQL Edge.

    Параметр -h (имя узла) также полезен, но он не используется в этом руководстве для простоты. Он изменяет внутреннее имя контейнера на пользовательское значение. Это имя, которое возвращается в следующем запросе Transact-SQL:

    SELECT @@SERVERNAME,
        SERVERPROPERTY('ComputerNamePhysicalNetBIOS'),
        SERVERPROPERTY('MachineName'),
        SERVERPROPERTY('ServerName');
    

    Установка параметров -h и --name равными позволяет легко идентифицировать целевой контейнер.

  5. В качестве последнего шага измените пароль SA, так как MSSQL_SA_PASSWORD отображается в выходных данных ps -eax и хранится в переменной среды с тем же именем. Ознакомьтесь со следующими шагами.

Смена пароля администратора

Учетная запись SA обладает правами администратора на экземпляре SQL Azure для пограничных вычислений, создаваемом во время установки. После создания контейнера SQL Для пограничных вычислений MSSQL_SA_PASSWORD указанную переменную среды можно обнаружить, выполнив echo $MSSQL_SA_PASSWORD в контейнере. В целях безопасности смените пароль SA.

  1. Назначьте для пользователя SA надежный пароль.

  2. Используйте docker exec для запуска sqlcmd, чтобы изменить пароль с помощью Transact-SQL. В следующем примере замените старый пароль <YourStrong!Passw0rd> и новый пароль <YourNewStrong!Passw0rd>собственными паролями.

    sudo docker exec -it azuresqledge /opt/mssql-tools/bin/sqlcmd \
       -S localhost -U SA -P "<YourStrong@Passw0rd>" \
       -Q 'ALTER LOGIN SA WITH PASSWORD="<YourNewStrong@Passw0rd>"'
    

Подключение к службе SQL Azure для пограничных вычислений

В следующих шагах используется программа командной строки Azure SQL Edge sqlcmd в контейнере для подключения к SQL Для пограничных вычислений.

  1. Выполните команду docker exec -it, чтобы запустить интерактивную оболочку bash внутри запущенного контейнера. В следующем примере — это имя, azuresqledge указанное параметром --name при создании контейнера.

    sudo docker exec -it azuresqledge "bash"
    
  2. После входа в контейнер подключитесь локально с помощью sqlcmd. По умолчанию sqlcmd отсутствует в пути, поэтому необходимо указать полный путь.

    /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "<YourNewStrong@Passw0rd>"
    

    Совет

    Вы можете опустить пароль в командной строке. В этом случае вы получите приглашение для его ввода.

  3. Если все сработает должным образом, вы перейдете к приглашению команды sqlcmd: 1>.

Создание и запрос данных

В следующих разделах приведено пошаговое руководство по созданию базы данных, добавлению данных и запуску запроса с использованием sqlcmd и Transact-SQL.

Создание базы данных

Выполните следующие шаги, чтобы создать базу данных TestDB.

  1. В приглашении команды sqlcmd вставьте следующую команду Transact-SQL, чтобы создать тестовую базу данных:

    CREATE DATABASE TestDB;
    GO
    
  2. В следующей строке напишите запрос, который должен вернуть имена всех баз данных на сервере:

    SELECT name from sys.databases;
    GO
    

Добавление данных

Теперь создайте таблицу Inventory и вставьте две новых строки.

  1. В приглашении команды sqlcmd переключите контекст на новую базу данных TestDB:

    USE TestDB;
    
  2. Создайте таблицу Inventory:

    CREATE TABLE Inventory (
        id INT,
        name NVARCHAR(50),
        quantity INT
    );
    
  3. Вставьте данные в новую таблицу:

    INSERT INTO Inventory
    VALUES (1, 'banana', 150);
    
    INSERT INTO Inventory
    VALUES (2, 'orange', 154);
    
  4. Введите GO, чтобы выполнить предыдущие команды:

    GO
    

Выбор данных

Теперь выполните запрос, чтобы вернуть данные из таблицы Inventory.

  1. В приглашении команды sqlcmd введите запрос, который должен вернуть из таблицы Inventory строки, где количество превышает 152:

    SELECT * FROM Inventory WHERE quantity > 152;
    
  2. Выполните команду:

    GO
    

Выход из приглашения команды sqlcmd

  1. Чтобы завершить сеанс sqlcmd, введите QUIT:

    QUIT
    
  2. Чтобы выйти из интерактивной командной строки в контейнере, введите команду exit. Контейнер продолжит работать после выхода из интерактивной оболочки bash.

Подключение из-за пределов контейнера

Вы также можете подключиться к экземпляру SQL Для пограничных вычислений на компьютере Docker из любого внешнего средства Linux, Windows или macOS, поддерживающего подключения SQL. Дополнительные сведения о подключении к контейнеру SQL Edge извне см. в статье Подключение и запрос Azure SQL Edge.

Удаление контейнера

Если вы хотите удалить контейнер SQL Edge, используемый в этом руководстве, выполните следующие команды:

sudo docker stop azuresqledge
sudo docker rm azuresqledge

Предупреждение

При остановке и удалении контейнера безвозвратно удаляются все данные SQL Для пограничных вычислений в контейнере. Чтобы сохранить данные, создайте и скопируйте файл резервной копии за пределы контейнера или используйте метод постоянного хранения данных контейнера.

Дальнейшие действия