Déployer Azure SQL Edge avec Docker

Important

Azure SQL Edge ne prend plus en charge la plateforme ARM64.

Dans ce guide de démarrage rapide, vous utilisez Docker pour tirer (pull) et exécuter l’image conteneur Azure SQL Edge. Ensuite, vous vous connectez avec sqlcmd pour créer votre première base de données et exécuter des requêtes.

Cette image se compose de SQL Edge basé sur Ubuntu 18.04. Elle peut être utilisée avec Docker Engine 1.8+ sur Linux.

Les conteneurs Azure SQL Edge ne sont pas pris en charge sur les plateformes suivantes pour les charges de travail de production :

  • Windows
  • macOS
  • Azure IoT Edge pour Linux sur Windows (EFLOW)

Prérequis

  • Docker Engine 1.8+ sur n’importe quelle distribution Linux prise en charge. Pour plus d’informations, consultez Installer Docker. Les images SQL Edge étant basées sur Ubuntu 18.04, nous vous recommandons d’utiliser un hôte Docker Ubuntu 18.04.
  • Pilote de stockage overlay2 de Docker. Il s’agit de la valeur par défaut pour la plupart des utilisateurs. Si finalement vous n’utilisez pas ce fournisseur de stockage et que vous devez en changer, consultez les instructions et les avertissements dans la documentation Docker pour la configuration d’overlay2.
  • Au moins 10 Go d’espace disque.
  • Au moins 1 Go de RAM.
  • Configuration matérielle requise pour Azure SQL Edge.

Notes

Pour les commandes bash de cet article, sudo est utilisé. Si vous ne souhaitez pas utiliser sudo pour exécuter Docker, vous pouvez configurer un groupe Docker et ajouter des utilisateurs à ce groupe. Pour plus d’informations, consultez Étapes consécutives à l’installation pour Linux.

Extraire et exécuter l’image conteneur

  1. Extrayez l’image conteneurAzure SQL Edge à partir de Microsoft Azure Container Registry.

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

    La commande précédente tire (pull) l’image conteneur SQL Edge la plus récente. Pour voir toutes les images disponibles, consultez la page Docker Hub azure-sql-edge.

  2. Pour exécuter l’image conteneur avec Docker, utilisez la commande suivante dans un interpréteur de commandes bash :

    • Démarrez une instance Azure SQL Edge exécutée en tant qu’édition 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
      
    • Démarrez une instance Azure SQL Edge exécutée en tant qu’édition 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
      

    Important

    Le mot de passe doit suivre la stratégie de mot de passe du moteur de base de données Microsoft SQL par défaut, sinon le conteneur ne peut pas configurer le moteur SQL Database et cessera de fonctionner. Par défaut, le mot de passe doit avoir au moins 8 caractères appartenant à trois des quatre groupes suivants : lettres majuscules, lettres minuscules, chiffres de base 10 et symboles. Vous pouvez examiner le journal des erreurs en exécutant la commande docker logs.

    Le tableau suivant décrit les paramètres des exemples docker run précédents :

    Paramètre Description
    -e "ACCEPT_EULA=Y" Définissez la variable ACCEPT_EULA sur n’importe quelle valeur pour confirmer que vous acceptez le Contrat de licence utilisateur final. Paramètre requis pour l’image SQL Edge.
    -e "MSSQL_SA_PASSWORD=yourStrong(!)Password" Spécifiez votre propre mot de passe fort, qui doit avoir au moins huit caractères et respecter les exigences de mot de passe Azure SQL Edge. Paramètre requis pour l’image SQL Edge.
    -p 1433:1433 Mappez un port TCP sur l’environnement hôte (première valeur) à un port TCP dans le conteneur (deuxième valeur). Dans cet exemple, SQL Edge écoute sur TCP 1433 dans le conteneur, mappé au port 1433 sur l’hôte.
    --name azuresqledge Spécifiez un nom personnalisé pour le conteneur plutôt qu’un nom généré de manière aléatoire. Si vous exécutez plusieurs conteneurs, vous ne pouvez pas réutiliser le même nom.
    -d Exécutez le conteneur en arrière-plan (démon)

    Pour obtenir la liste complète de toutes les variables d’environnement Azure SQL Edge, consultez Configurer Azure SQL Edge avec des variables d’environnement. Vous pouvez également utiliser un fichier mssql.conf pour configurer des conteneurs SQL Edge.

  3. Pour afficher vos conteneurs Docker, utilisez la commande docker ps.

    sudo docker ps -a
    
  4. Si la colonne ÉTAT affiche En cours d’exécution, SQL Edge s’exécute dans le conteneur et écoute sur le port spécifié dans la colonne PORTS. Si la colonne ÉTAT pour votre conteneur SQL Edge affiche Quitté, consultez la section Résolution des problèmes dans la documentation Azure SQL Edge.

    Le paramètre -h (nom d’hôte) est également utile, mais il n’est pas utilisé dans ce tutoriel pour faire simple. Il permet de changer le nom interne du conteneur en une valeur personnalisée. Il s’agit du nom retourné dans la requête Transact-SQL suivante :

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

    Pour identifier facilement le conteneur cible, définissez -h et --name sur la même valeur.

  5. Pour finir, modifiez votre mot de passe AS car le MSSQL_SA_PASSWORD est visible dans la sortieps -eax et stocké dans la variable d’environnement du même nom. Regardez les étapes suivantes.

Changer le mot de passe AS

Le compte SA est un administrateur système sur l’instance Azure SQL Edge créée lors de l’installation. Une fois le conteneur SQL Edge créé, la variable d’environnement MSSQL_SA_PASSWORD que vous avez spécifiée peut être découverte en exécutant echo $MSSQL_SA_PASSWORD dans le conteneur. Pour des raisons de sécurité, changez le mot de passe pour SA.

  1. Choisissez un mot de passe fort à utiliser pour l’utilisateur SA.

  2. Utilisez docker exec pour exécuter sqlcmd pour changer le mot de passe avec Transact-SQL. Dans l’exemple suivant, remplacez l’ancien mot de passe, <YourStrong!Passw0rd>, et le nouveau mot de passe, <YourNewStrong!Passw0rd>, par vos propres valeurs de mot de passe.

    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>"'
    

Se connecter à Azure SQL Edge

La procédure suivante utilise l’outil en ligne de commande Azure SQL Edge, sqlcmd, dans le conteneur pour se connecter à SQL Edge.

  1. Utilisez la commande docker exec -it pour démarrer un interpréteur de commandes bash interactif dans votre conteneur en cours d’exécution. Dans l’exemple suivant, azuresqledge est le nom spécifié par le paramètre --name quand vous avez créé le conteneur.

    sudo docker exec -it azuresqledge "bash"
    
  2. Une fois dans le conteneur, connectez-vous localement avec sqlcmd. sqlcmd n’est pas dans le chemin par défaut, vous devez spécifier le chemin complet.

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

    Conseil

    Vous pouvez omettre le mot de passe sur la ligne de commande pour être invité à l’entrer.

  3. Si l’opération réussit, vous devez accéder à une invite de commandes sqlcmd : 1>.

Créer et interroger des données

Les sections suivantes vous guident lors de l’utilisation de sqlcmd et Transact-SQL pour créer une base de données, ajouter des données et exécuter une requête.

Créer une base de données

La procédure suivante crée une base de données nommée TestDB.

  1. À partir de l’invite de commandes sqlcmd, collez la commande Transact-SQL suivante pour créer une base de données de test :

    CREATE DATABASE TestDB;
    GO
    
  2. Sur la ligne suivante, écrivez une requête pour retourner le nom de toutes les bases de données sur votre serveur :

    SELECT name from sys.databases;
    GO
    

Insertion des données

Créez ensuite une table, Inventory, et insérez deux nouvelles lignes.

  1. À partir de l’invite de commandes sqlcmd, basculez le contexte vers la nouvelle base de données TestDB :

    USE TestDB;
    
  2. Créez une table nommée Inventory :

    CREATE TABLE Inventory (
        id INT,
        name NVARCHAR(50),
        quantity INT
    );
    
  3. Insérez des données dans la nouvelle table :

    INSERT INTO Inventory
    VALUES (1, 'banana', 150);
    
    INSERT INTO Inventory
    VALUES (2, 'orange', 154);
    
  4. Tapez GO pour exécuter les commandes précédentes :

    GO
    

Sélectionner les données

Exécutez maintenant une requête pour retourner des données de la table Inventory.

  1. Dans l’invite de commandes sqlcmd, entrez une requête qui retourne les lignes de la table Inventory dont la quantité est supérieure à 152 :

    SELECT * FROM Inventory WHERE quantity > 152;
    
  2. Exécutez la commande :

    GO
    

Quitter l’invite de commandes sqlcmd

  1. Pour mettre fin à votre session sqlcmd, tapez QUIT :

    QUIT
    
  2. Pour quitter l’invite de commandes interactive dans votre conteneur, tapez exit. Le conteneur continue de s’exécuter une fois que vous avez quitté l’interpréteur de commandes bash interactif.

Se connecter en dehors du conteneur

Vous pouvez aussi vous connecter à l’instance SQL Edge sur votre machine Docker à partir de n’importe quel outil externe Linux, Windows ou macOS qui prend en charge les connexions SQL. Pour plus d’informations sur la connexion à un conteneur SQL Edge depuis l’extérieur, consultez Connecter et interroger Azure SQL Edge.

Supprimer votre conteneur

Si vous voulez supprimer le conteneur SQL Edge utilisé dans ce tutoriel, exécutez les commandes suivantes :

sudo docker stop azuresqledge
sudo docker rm azuresqledge

Avertissement

L’arrêt et la suppression d’un conteneur suppriment définitivement toutes les données SQL Edge dans le conteneur. Si vous avez besoin de conserver vos données, créez et copiez un fichier de sauvegarde en dehors du conteneur ou utilisez une technique de persistance de données de conteneur.

Étapes suivantes