Démarrage rapide : Exécuter des images de conteneur SQL Server avec Docker

S’applique à : SQL Server - Linux

Dans ce guide de démarrage rapide, vous utilisez Docker pour extraire et exécuter l’image conteneur Linux de SQL Server 2017 (14.x) mssql-server-linux. Ensuite, vous pouvez vous connecter avec sqlcmd pour créer votre première base de données et exécuter des requêtes.

Pour plus d'informations sur les plateformes prises en charge, consultez les notes de version de SQL Server 2017 on Linux.

Avertissement

Lorsque vous arrêtez et supprimez un conteneur, cela supprime définitivement toutes les données SQL Server dans le conteneur. Pour plus d’informations sur la manière 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.

Ce guide de démarrage rapide crée des conteneurs SQL Server 2017 (14.x). Si vous souhaitez créer des conteneurs Linux pour différentes versions de SQL Server, consultez les versions de cet article pour SQL Server 2019 (15.x) ou SQL Server 2022 (16.x).

Dans ce guide de démarrage rapide, vous utilisez Docker pour extraire et exécuter l’image conteneur Linux de SQL Server 2019 (15.x) mssql-server-linux. Ensuite, vous pouvez vous connecter avec sqlcmd pour créer votre première base de données et exécuter des requêtes.

Pour plus d'informations sur les plateformes prises en charge, consultez les notes de version de SQL Server 2019 on Linux.

Avertissement

Lorsque vous arrêtez et supprimez un conteneur, cela supprime définitivement toutes les données SQL Server dans le conteneur. Pour plus d’informations sur la manière 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.

Ce guide de démarrage rapide crée des conteneurs SQL Server 2019 (15.x). Si vous souhaitez créer des conteneurs Linux pour différentes versions de SQL Server, consultez les versions SQL Server 2017 (14.x) ou SQL Server 2022 (16.x) dans cet article.

Dans ce guide de démarrage rapide, vous utilisez Docker pour extraire et exécuter l’image conteneur Linux de SQL Server 2022 (16.x) mssql-server-linux. Ensuite, vous pouvez vous connecter avec sqlcmd pour créer votre première base de données et exécuter des requêtes.

Pour plus d’informations sur les plateformes prises en charge, consultez Notes de publication de SQL Server 2022 sur Linux.

Avertissement

Lorsque vous arrêtez et supprimez un conteneur, cela supprime définitivement toutes les données SQL Server dans le conteneur. Pour plus d’informations sur la manière 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.

Ce guide de démarrage rapide permet de créer des conteneurs SQL Server 2022 (16.x). Si vous préférez créer des conteneurs Linux pour différentes versions de SQL Server, consultez les versions SQL Server 2017 (14.x) ou Préversion SQL Server 2019 (15.x) de cet article.

Cette image est composée de SQL Server s’exécutant sur Linux basé sur Ubuntu. Elle peut être utilisée avec Docker Engine 1.8+ sur Linux.

À partir de SQL Server 2022 (16.x) CU 14 et SQL Server 2019 (15.x) CU 28, les images conteneur incluent le nouveau package mssql-tools18. Le référentiel précédent /opt/mssql-tools/bin est en cours de suppression progressive. Le nouveau référentiel pour les outils Microsoft ODBC 18 est /opt/mssql-tools18/bin, aligné sur l’offre d’outils la plus récente. Pour plus d’informations sur les modifications et les améliorations de sécurité, consultez ODBC Driver 18.0 pour SQL Server publié.

Les exemples de cet article utilisent la commande docker. Toutefois, la plupart de ces commandes fonctionnent aussi avec Podman. Podman fournit une interface de ligne de commande similaire au moteur Docker. Vous trouverez plus d’informations sur Podman.

Important

sqlcmd ne prend actuellement pas en charge le paramètre MSSQL_PID lors de la création de conteneurs. Si vous utilisez les instructions sqlcmd de ce guide de démarrage rapide, vous créez un conteneur avec l’édition Développeur de SQL Server. Utilisez les instructions de l’interface de ligne de commande (CLI) pour créer un conteneur à l’aide de la licence de votre choix. Pour plus d’informations, consultez Déployer et se connecter à des conteneurs Linux SQL Server.

Prérequis

  • Docker Engine 1.8+ sur n’importe quelle distribution Linux prise en charge. Pour plus d’informations, consultez Installer Docker.

Extraire et exécuter l'image de conteneur SQL Server Linux

Avant de commencer les étapes suivantes, assurez-vous que vous avez sélectionné votre shell préféré (bash, PowerShell ou cmd) en haut de cet article.

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 le conteneur du registre

Extrayez l’image conteneur Linux de SQL Server 2017 (14.x) à partir de Microsoft Azure Container Registry.

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

Ce guide de démarrage rapide crée des conteneurs SQL Server 2017 (14.x). Si vous souhaitez créer des conteneurs Linux pour différentes versions de SQL Server, consultez les versions de SQL Server 2019 (15.x) ou SQL Server 2022 (16.x) dans cet article.

La commande précédente extrait la dernière image conteneur de SQL Server 2017 (14.x) Linux. Si vous voulez extraire une image spécifique, ajoutez un signe deux-points et le nom de la balise, comme mcr.microsoft.com/mssql/server:2017-GA-ubuntu. Pour voir toutes les images disponibles, consultez le Registre des artefacts Microsoft.

Exécuter le conteneur

Pour exécuter l’image conteneur Linux avec Docker, vous pouvez utiliser la commande suivante à partir d’un interpréteur de commandes bash ou d’une invite de commandes PowerShell avec élévation de privilèges.

Important

La variable d’environnement SA_PASSWORD est dépréciée. Utilisez MSSQL_SA_PASSWORD à la place.

sudo docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" \
   -p 1433:1433 --name sql1 --hostname sql1 \
   -d \
   mcr.microsoft.com/mssql/server:2017-latest

Si vous utilisez PowerShell Core, remplacez les guillemets doubles par des guillemets simples.

docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" `
   -p 1433:1433 --name sql1 --hostname sql1 `
   -d `
   mcr.microsoft.com/mssql/server:2017-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" `
   -p 1433:1433 --name sql1 --hostname sql1 `
   -d `
   mcr.microsoft.com/mssql/server:2017-latest

Votre mot de passe doit suivre la stratégie de mot de passe SQL Server par défaut, sinon le conteneur ne peut pas configurer SQL Server et s’arrête de fonctionner. Par défaut, le mot de passe doit avoir au moins huit 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.

Par défaut, ce démarrage rapide crée un conteneur avec l’édition Développeur de SQL Server. Le processus d’exécution des éditions de production dans des conteneurs est légèrement différent. Pour plus d’informations, consultez Exécuter des images conteneur de production.

Le tableau suivant décrit les paramètres de l’exemple docker run précédent :

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 obligatoire pour l’image de SQL Server.
-e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" Spécifiez votre propre mot de passe fort, qui doit avoir au moins huit caractères et respecter la stratégie de mot de passe. Paramètre obligatoire pour l’image de SQL Server.
-e "MSSQL_COLLATION=<SQL_Server_collation>" Spécifiez un classement de SQL Server personnalisé plutôt que la valeur SQL_Latin1_General_CP1_CI_AS par défaut.
-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 Server écoute sur le port TCP 1433 dans le conteneur et ce port de conteneur est ensuite exposé au port TCP 1433 sur l'hôte.
--name sql1 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.
--hostname sql1 Permet de définir explicitement le nom d’hôte du conteneur. Si vous ne spécifiez pas le nom d’hôte, il s’agit par défaut de l’ID de conteneur, qui est un GUID système généré de manière aléatoire.
-d Exécutez le conteneur en arrière-plan (démon).
mcr.microsoft.com/mssql/server:2017-latest L’image conteneur Linux de SQL Server

Afficher la liste des conteneurs

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

    sudo docker ps -a
    
    docker ps -a
    
    docker ps -a
    

    Vous devez obtenir une sortie similaire à la suivante :

    CONTAINER ID   IMAGE                                        COMMAND                    CREATED         STATUS         PORTS                                       NAMES
    d4a1999ef83e   mcr.microsoft.com/mssql/server:2017-latest   "/opt/mssql/bin/perm..."   2 minutes ago   Up 2 minutes   0.0.0.0:1433->1433/tcp, :::1433->1433/tcp   sql1
    
  2. Si la colonne STATUS affiche Up, SQL Server est en cours d’exécution dans le conteneur et écoute sur le port spécifié dans la colonne PORTS. Si la colonne STATUS de votre conteneur SQL Server indique Exited, consultez Résolution des problèmes liés aux conteneurs Docker SQL Server. Le serveur est prêt pour la connexion une fois que les journaux d’erreurs SQL Server affichent le message : SQL Server is now ready for client connections. This is an informational message; no user action is required. Vous pouvez consulter le journal des erreurs SQL Server dans le conteneur à l’aide de la commande :

    sudo docker exec -t sql1 cat /var/opt/mssql/log/errorlog | grep connection
    

    Comme nous l’avons vu plus précédemment, le paramètre --hostname permet de changer le nom interne du conteneur en valeur personnalisée. Cette valeur est le 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 --hostname et --name sur la même valeur.

  3. Pour finir, modifiez votre mot de passe AS dans un environnement de production car le MSSQL_SA_PASSWORD est visible dans la sortie ps -eax et stocké dans la variable d’environnement du même nom.

Extraire et exécuter l'image de conteneur SQL Server Linux

Avant de commencer les étapes suivantes, assurez-vous que vous avez sélectionné votre shell préféré (bash, PowerShell ou cmd) en haut de cet article.

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 le conteneur du registre

Extrayez l’image conteneur Linux de SQL Server 2019 (15.x) à partir de Microsoft Azure Container Registry.

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

Ce guide de démarrage rapide crée des conteneurs SQL Server 2019 (15.x). Si vous souhaitez créer des conteneurs Linux pour différentes versions de SQL Server, consultez les versions SQL Server 2017 (14.x) ou SQL Server 2022 (16.x) dans cet article.

La commande précédente extrait la dernière image conteneur de SQL Server 2019 (15.x) Linux. Si vous voulez extraire une image spécifique, ajoutez un signe deux-points et le nom de la balise, comme mcr.microsoft.com/mssql/server:2019-GA-ubuntu. Pour voir toutes les images disponibles, consultez le Registre des artefacts Microsoft.

Exécuter le conteneur

Pour exécuter l’image conteneur Linux avec Docker, vous pouvez utiliser la commande suivante à partir d’un interpréteur de commandes bash ou d’une invite de commandes PowerShell avec élévation de privilèges.

Important

La variable d’environnement SA_PASSWORD est dépréciée. Utilisez MSSQL_SA_PASSWORD à la place.

docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" \
   -p 1433:1433 --name sql1 --hostname sql1 \
   -d \
   mcr.microsoft.com/mssql/server:2019-latest

Si vous utilisez PowerShell Core, remplacez les guillemets doubles par des guillemets simples.

docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" `
   -p 1433:1433 --name sql1 --hostname sql1 `
   -d `
   mcr.microsoft.com/mssql/server:2019-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" `
   -p 1433:1433 --name sql1 --hostname sql1 `
   -d `
   mcr.microsoft.com/mssql/server:2019-latest

Votre mot de passe doit suivre la stratégie de mot de passe SQL Server par défaut, sinon le conteneur ne peut pas configurer SQL Server et s’arrête de fonctionner. Par défaut, le mot de passe doit avoir au moins huit 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.

Par défaut, ce démarrage rapide crée un conteneur avec l’édition Développeur de SQL Server. Le processus d’exécution des éditions de production dans des conteneurs est légèrement différent. Pour plus d’informations, consultez Exécuter des images conteneur de production.

Le tableau suivant décrit les paramètres de l’exemple docker run précédent :

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 obligatoire pour l’image de SQL Server.
-e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" Spécifiez votre propre mot de passe fort, qui doit avoir au moins huit caractères et respecter la stratégie de mot de passe. Paramètre obligatoire pour l’image de SQL Server.
-e "MSSQL_COLLATION=<SQL_Server_collation>" Spécifiez un classement de SQL Server personnalisé plutôt que la valeur SQL_Latin1_General_CP1_CI_AS par défaut.
-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 Server écoute sur le port TCP 1433 dans le conteneur et ce port de conteneur est ensuite exposé au port TCP 1433 sur l'hôte.
--name sql1 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.
--hostname sql1 Permet de définir explicitement le nom d’hôte du conteneur. Si vous ne spécifiez pas le nom d’hôte, il s’agit par défaut de l’ID de conteneur, qui est un GUID système généré de manière aléatoire.
-d Exécutez le conteneur en arrière-plan (démon).
mcr.microsoft.com/mssql/server:2019-latest L’image conteneur Linux de SQL Server

Afficher la liste des conteneurs

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

    docker ps -a
    
    docker ps -a
    
    docker ps -a
    

    Vous devez obtenir une sortie similaire à la suivante :

    CONTAINER ID   IMAGE                                        COMMAND                    CREATED         STATUS         PORTS                                       NAMES
    d4a1999ef83e   mcr.microsoft.com/mssql/server:2019-latest   "/opt/mssql/bin/perm..."   2 minutes ago   Up 2 minutes   0.0.0.0:1433->1433/tcp, :::1433->1433/tcp   sql1
    
  2. Si la colonne STATUS affiche Up, SQL Server est en cours d’exécution dans le conteneur et écoute sur le port spécifié dans la colonne PORTS. Si la colonne STATUS de votre conteneur SQL Server indique Exited, consultez Résolution des problèmes liés aux conteneurs Docker SQL Server. Le serveur est prêt pour la connexion une fois que les journaux d’erreurs SQL Server affichent le message : SQL Server is now ready for client connections. This is an informational message; no user action is required. Vous pouvez consulter le journal des erreurs SQL Server dans le conteneur à l’aide de la commande :

    docker exec -t sql1 cat /var/opt/mssql/log/errorlog | grep connection
    

    Comme nous l’avons vu plus précédemment, le paramètre --hostname permet de changer le nom interne du conteneur en valeur personnalisée. Cette valeur est le 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 --hostname et --name sur la même valeur.

  3. Pour finir, modifiez votre mot de passe AS dans un environnement de production car le MSSQL_SA_PASSWORD est visible dans la sortie ps -eax et stocké dans la variable d’environnement du même nom.

Extraire et exécuter l'image de conteneur SQL Server Linux

Avant de commencer les étapes suivantes, assurez-vous que vous avez sélectionné votre shell préféré (bash, PowerShell ou cmd) en haut de cet article.

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 le conteneur du registre

Tirez (pull) l’image conteneur Linux de SQL Server 2022 (16.x) à partir de Microsoft Azure Container Registry.

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

Ce guide de démarrage rapide permet de créer des conteneurs SQL Server 2022 (16.x). Si vous préférez créer des conteneurs Linux pour différentes versions de SQL Server, consultez les versions SQL Server 2017 (14.x) ou Préversion SQL Server 2019 (15.x) de cet article.

La commande précédente extrait la dernière image conteneur de SQL Server 2022 (16.x) Linux. Si vous voulez extraire une image spécifique, ajoutez un signe deux-points et le nom de la balise, comme mcr.microsoft.com/mssql/server:2022-GA-ubuntu. Pour voir toutes les images disponibles, consultez le Registre des artefacts Microsoft.

Exécuter le conteneur

Pour exécuter l’image conteneur Linux avec Docker, vous pouvez utiliser la commande suivante à partir d’un interpréteur de commandes bash ou d’une invite de commandes PowerShell avec élévation de privilèges.

Important

La variable d’environnement SA_PASSWORD est dépréciée. Utilisez MSSQL_SA_PASSWORD à la place.

docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" \
   -p 1433:1433 --name sql1 --hostname sql1 \
   -d \
   mcr.microsoft.com/mssql/server:2022-latest

Si vous utilisez PowerShell Core, remplacez les guillemets doubles par des guillemets simples.

docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" `
   -p 1433:1433 --name sql1 --hostname sql1 `
   -d `
   mcr.microsoft.com/mssql/server:2022-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" `
   -p 1433:1433 --name sql1 --hostname sql1 `
   -d `
   mcr.microsoft.com/mssql/server:2022-latest

Votre mot de passe doit suivre la stratégie de mot de passe SQL Server par défaut, sinon le conteneur ne peut pas configurer SQL Server et s’arrête de fonctionner. Par défaut, le mot de passe doit avoir au moins huit 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.

Par défaut, ce démarrage rapide crée un conteneur avec l’édition Développeur de SQL Server. Le processus d’exécution des éditions de production dans des conteneurs est légèrement différent. Pour plus d’informations, consultez Exécuter des images conteneur de production.

Le tableau suivant décrit les paramètres de l’exemple docker run précédent :

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 obligatoire pour l’image de SQL Server.
-e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" Spécifiez votre propre mot de passe fort, qui doit avoir au moins huit caractères et respecter la stratégie de mot de passe. Paramètre obligatoire pour l’image de SQL Server.
-e "MSSQL_COLLATION=<SQL_Server_collation>" Spécifiez un classement de SQL Server personnalisé plutôt que la valeur SQL_Latin1_General_CP1_CI_AS par défaut.
-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 Server écoute sur le port TCP 1433 dans le conteneur et ce port de conteneur est ensuite exposé au port TCP 1433 sur l'hôte.
--name sql1 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.
--hostname sql1 Permet de définir explicitement le nom d’hôte du conteneur. Si vous ne spécifiez pas le nom d’hôte, il s’agit par défaut de l’ID de conteneur, qui est un GUID système généré de manière aléatoire.
-d Exécutez le conteneur en arrière-plan (démon).
mcr.microsoft.com/mssql/server:2022-latest L’image conteneur Linux de SQL Server

Modifier le mot de passe d’administrateur système

Le compte SA est un administrateur système sur l’instance SQL Server qui est créée lors de l’installation. Une fois le conteneur SQL Server 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. À des fins de sécurité, vous devez modifier votre mot de passe AS dans un environnement de production.

  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, l’ancien et le nouveau mot de passe sont lus à partir de l’entrée utilisateur.

    docker exec -it sql1 /opt/mssql-tools18/bin/sqlcmd \
    -S localhost -U SA \
     -P "$(read -sp "Enter current SA password: "; echo "${REPLY}")" \
     -Q "ALTER LOGIN SA WITH PASSWORD=\"$(read -sp "Enter new SA password: "; echo "${REPLY}")\""
    
    docker exec -it sql1 /opt/mssql-tools18/bin/sqlcmd `
       -S localhost -U SA -P "<YourStrong@Passw0rd>" `
       -Q "ALTER LOGIN SA WITH PASSWORD='<YourNewStrong@Passw0rd>'"
    
    docker exec -it sql1 /opt/mssql-tools18/bin/sqlcmd `
       -S localhost -U SA -P "<YourStrong@Passw0rd>" `
       -Q "ALTER LOGIN SA WITH PASSWORD='<YourNewStrong@Passw0rd>'"
    

    Les versions récentes de sqlcmd sont sécurisées par défaut. Si vous souhaitez en savoir plus sur le chiffrement de connexion, veuillez consulter les rubriques Utilitaire sqlcmd pour Windows et Connexion avec sqlcmd pour Linux et macOS. Si la connexion échoue, vous pouvez ajouter l’option -No à sqlcmd pour spécifier que le chiffrement est facultatif, et non obligatoire.

Désactiver le compte sa dans le cadre des meilleures pratiques

Important

Vous aurez besoin de ces informations d’identification pour les étapes ultérieures. Veillez à noter l’identifiant utilisateur et le mot de passe que vous entrez ici.

Lorsque vous vous connectez à votre instance SQL Server à l’aide du compte sa pour la première fois après l’installation, selon les meilleures pratiques en matière de sécurité, il est important de suivre ces étapes, puis de désactiver immédiatement la connexion sa.

  1. Créez une connexion et définissez-la comme membre du rôle serveur administrateur système.

  2. Connectez-vous à l’instance SQL Server à l’aide de la nouvelle connexion que vous avez créée.

  3. Désactivez le compte sa, comme recommandé dans le cadre des meilleures pratiques de sécurité.

Afficher la liste des conteneurs

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

    docker ps -a
    
    docker ps -a
    
    docker ps -a
    

    Vous devez obtenir une sortie similaire à la suivante :

    CONTAINER ID   IMAGE                                        COMMAND                    CREATED         STATUS         PORTS                                       NAMES
    d4a1999ef83e   mcr.microsoft.com/mssql/server:2022-latest   "/opt/mssql/bin/perm..."   2 minutes ago   Up 2 minutes   0.0.0.0:1433->1433/tcp, :::1433->1433/tcp   sql1
    
  2. Si la colonne STATUS affiche Up, SQL Server est en cours d’exécution dans le conteneur et écoute sur le port spécifié dans la colonne PORTS. Si la colonne STATUS de votre conteneur SQL Server indique Exited, consultez Résolution des problèmes liés aux conteneurs Docker SQL Server. Le serveur est prêt pour la connexion une fois que les journaux d’erreurs SQL Server affichent le message : SQL Server is now ready for client connections. This is an informational message; no user action is required. Vous pouvez consulter le journal des erreurs SQL Server dans le conteneur à l’aide de la commande :

    docker exec -t sql1 cat /var/opt/mssql/log/errorlog | grep connection
    

    Comme nous l’avons vu plus précédemment, le paramètre --hostname permet de changer le nom interne du conteneur en valeur personnalisée. Cette valeur est le 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 --hostname et --name sur la même valeur.

Se connecter à SQL Server

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

  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, sql1 est le nom spécifié par le paramètre --name quand vous avez créé le conteneur.

    docker exec -it sql1 "bash"
    
    docker exec -it sql1 "bash"
    
    docker exec -it sql1 "bash"
    
  1. Une fois dans le conteneur, connectez-vous localement avec sqlcmd en utilisant son chemin complet.

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

    Les versions récentes de sqlcmd sont sécurisées par défaut. Si vous souhaitez en savoir plus sur le chiffrement de connexion, veuillez consulter les rubriques Utilitaire sqlcmd pour Windows et Connexion avec sqlcmd pour Linux et macOS. Si la connexion échoue, vous pouvez ajouter l’option -No à sqlcmd pour spécifier que le chiffrement est facultatif, et non obligatoire.

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

    /opt/mssql-tools/bin/sqlcmd -S localhost -U <userid>
    
  1. Une fois dans le conteneur, connectez-vous localement avec sqlcmd en utilisant son chemin complet.

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

    Les versions récentes de sqlcmd sont sécurisées par défaut. Si vous souhaitez en savoir plus sur le chiffrement de connexion, veuillez consulter les rubriques Utilitaire sqlcmd pour Windows et Connexion avec sqlcmd pour Linux et macOS. Si la connexion échoue, vous pouvez ajouter l’option -No à sqlcmd pour spécifier que le chiffrement est facultatif, et non obligatoire.

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

    /opt/mssql-tools18/bin/sqlcmd -S localhost -U <userid>
    
  1. Une fois dans le conteneur, connectez-vous localement avec sqlcmd en utilisant son chemin complet.

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

    Les versions récentes de sqlcmd sont sécurisées par défaut. Si vous souhaitez en savoir plus sur le chiffrement de connexion, veuillez consulter les rubriques Utilitaire sqlcmd pour Windows et Connexion avec sqlcmd pour Linux et macOS. Si la connexion échoue, vous pouvez ajouter l’option -No à sqlcmd pour spécifier que le chiffrement est facultatif, et non obligatoire.

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

    /opt/mssql-tools18/bin/sqlcmd -S localhost -U <userid>
    
  1. 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;
    
  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;
    
  3. Les deux commandes précédentes n’ont pas été exécutées immédiatement. Tapez GO sur une nouvelle ligne pour exécuter les commandes précédentes :

    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 suivante :

    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 Server sur votre machine Docker à partir de n’importe quel outil externe Linux, Windows ou macOS qui prend en charge les connexions SQL. L’outil externe utilise l’adresse IP de la machine hôte.

Les étapes suivantes utilisent sqlcmd en dehors de votre conteneur pour se connecter à SQL Server en cours d’exécution dans le conteneur. Ces étapes supposent que vous avez déjà installé les outils en ligne de commande SQL Server en dehors de votre conteneur. Les mêmes principes s’appliquent quand vous utilisez d’autres outils, mais le processus de connexion est propre à chaque outil.

  1. Recherchez l’adresse IP de l’ordinateur hôte de votre conteneur en utilisant ifconfig ou ip addr.

  2. Pour cet exemple, installez l'outil sqlcmd sur votre ordinateur client. Pour plus d’informations, consultez Utilitaire sqlcmd ou Installer les outils en ligne de commande SQL Server sqlcmd et bcp sur Linux.

  3. Exécutez sqlcmd en spécifiant l’adresse IP et le port mappé au port 1433 dans votre conteneur. Dans cet exemple, le port est le même que le port 1433 sur la machine hôte. Si vous avez spécifié un autre port mappé sur l’ordinateur hôte, vous pouvez l’utiliser ici. Vous avez également besoin d’ouvrir le port d’entrée approprié sur votre pare-feu pour autoriser la connexion.

    Les versions récentes de sqlcmd sont sécurisées par défaut. Si la connexion échoue et si vous utilisez la version 18 ou ultérieure, vous pouvez ajouter l’option -No à sqlcmd pour spécifier que le chiffrement est facultatif, et non obligatoire.

    sudo sqlcmd -S <ip_address>,1433 -U <userid> -P "<YourNewStrong@Passw0rd>"
    
    sqlcmd -S <ip_address>,1433 -U <userid> -P "<YourNewStrong@Passw0rd>"
    
    sqlcmd -S <ip_address>,1433 -U <userid> -P "<YourNewStrong@Passw0rd>"
    
  4. Exécutez les commandes Transact-SQL. Quand vous avez terminé, tapez QUIT.

Voici d’autres outils courants pour vous connecter à SQL Server :

Supprimer votre conteneur

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

docker stop sql1
docker rm sql1
docker stop sql1
docker rm sql1
docker stop sql1
docker rm sql1

Démonstration Docker

Une fois que vous avez fini d’utiliser l’image conteneur de Linux de SQL Server pour Docker, vous pouvez être intéressé par des informations sur l’utilisation de Docker pour améliorer le développement et les tests. La vidéo suivante illustre l’utilisation de Docker dans une intégration continue et un scénario de déploiement.

Contribuer à la documentation SQL

Saviez-vous que vous pouvez modifier le contenu SQL vous-même ? Dans ce cas, non seulement vous nous aidez à améliorer notre documentation, mais vous êtes également cité en tant que contributeur à la page.

Pour plus d’informations, consultez Guide pratique pour contribuer à la documentation SQL Server