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.
- Pour plus d’informations sur la configuration matérielle requise et la prise en charge du processeur, consultez SQL Server 2016 et 2017 : configuration matérielle et logicielle requise.
- Pour plus d’informations sur la configuration matérielle requise et la prise en charge du processeur, consultez SQL Server 2019 : configuration matérielle et logicielle requise.
- Pour plus d’informations sur la configuration matérielle requise et la prise en charge du processeur, consultez SQL Server 2022 : configuration matérielle et logicielle requise.
Pilote de stockage
overlay2
de Docker. Ce pilote est le pilote par défaut pour la plupart des utilisateurs. Si 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.Installez les dernières instructions sqlcmd sur votre hôte Docker.
Au moins 2 Go d’espace disque
Au moins 2 Go de RAM
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
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
Si la colonne
STATUS
afficheUp
, SQL Server est en cours d’exécution dans le conteneur et écoute sur le port spécifié dans la colonnePORTS
. Si la colonneSTATUS
de votre conteneur SQL Server indiqueExited
, 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.Pour finir, modifiez votre mot de passe AS dans un environnement de production car le
MSSQL_SA_PASSWORD
est visible dans la sortieps -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
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
Si la colonne
STATUS
afficheUp
, SQL Server est en cours d’exécution dans le conteneur et écoute sur le port spécifié dans la colonnePORTS
. Si la colonneSTATUS
de votre conteneur SQL Server indiqueExited
, 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.Pour finir, modifiez votre mot de passe AS dans un environnement de production car le
MSSQL_SA_PASSWORD
est visible dans la sortieps -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.
Choisissez un mot de passe fort à utiliser pour l’utilisateur SA.
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
.
Créez une connexion et définissez-la comme membre du rôle serveur administrateur système.
Selon que vous disposez d’un déploiement de conteneur ou sans conteneur, activez l’Authentification Windows, créez une connexion Windows et ajoutez-la au rôle serveur administrateur système.
Sinon, créez une connexion à l’aide de l’authentification SQL Server et ajoutez-la au rôle serveur administrateur système.
Connectez-vous à l’instance SQL Server à l’aide de la nouvelle connexion que vous avez créée.
Désactivez le compte
sa
, comme recommandé dans le cadre des meilleures pratiques de sécurité.
Afficher la liste des conteneurs
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
Si la colonne
STATUS
afficheUp
, SQL Server est en cours d’exécution dans le conteneur et écoute sur le port spécifié dans la colonnePORTS
. Si la colonneSTATUS
de votre conteneur SQL Server indiqueExited
, 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.
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"
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>
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>
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>
- 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
.
À 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;
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;
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.
À partir de l’invite de commandes sqlcmd, basculez le contexte vers la nouvelle base de données
TestDB
:USE TestDB;
Créez une table nommée
Inventory
:CREATE TABLE Inventory (id INT, name NVARCHAR(50), quantity INT);
Insérez des données dans la nouvelle table :
INSERT INTO Inventory VALUES (1, 'banana', 150); INSERT INTO Inventory VALUES (2, 'orange', 154);
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
.
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;
Exécutez la commande suivante :
GO
Quitter l’invite de commandes sqlcmd
Pour mettre fin à votre session sqlcmd, tapez
QUIT
:QUIT
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.
Recherchez l’adresse IP de l’ordinateur hôte de votre conteneur en utilisant
ifconfig
ouip addr
.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.
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>"
Exécutez les commandes Transact-SQL. Quand vous avez terminé, tapez
QUIT
.
Voici d’autres outils courants pour vous connecter à SQL Server :
- Extension SQL Server pour Visual Studio Code
- Utiliser SQL Server Management Studio sur Windows pour gérer SQL Server sur Linux
- Qu’est-ce qu’Azure Data Studio ?
- mssql-cli (préversion)
- Gérer SQL Server sur Linux avec PowerShell Core
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.
Tâches associées
Contenu connexe
- Restaurer une base de données SQL Server dans un conteneur Linux
- Résoudre les problèmes liés aux conteneurs Docker SQL Server
- Référentiel GitHub mssql-docker
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