Déployer et se connecter à des conteneurs Linux SQL Server
S’applique à : SQL Server - Linux
Cet article explique comment déployer des conteneurs Linux SQL Server et s’y connecter.
Pour d’autres scénarios de déploiement, consultez :
Notes
Cet article se concentre spécifiquement sur l’utilisation de l’image mssql-server-linux
. Les déploiements de SQL Server dans des conteneurs Windows ne sont pas couverts par la prise en charge. Pour le développement et les tests, vous pouvez créer vos propres images conteneur personnalisées pour travailler avec SQL Server dans des conteneurs Windows. Des exemples de fichiers sont disponibles sur GitHub. Exemples de fichiers pour référence uniquement.
Important
Avant de choisir d’exécuter un conteneur SQL Server pour les cas d’utilisation de production, consultez notre stratégie de support pour les conteneurs SQL Server afin de vérifier que vous êtes en cours d’exécution sur une configuration prise en charge.
Cette vidéo de 6 minutes offre une introduction à l’exécution de SQL Server sur les conteneurs :
Extraire et exécuter l’image conteneur
Pour extraire et exécuter les images conteneur Docker pour SQL Server, suivez les prérequis et les étapes du guide de démarrage rapide suivant :
- Exécuter l’image conteneur de SQL Server 2017 avec Docker
- Exécuter l’image conteneur SQL Server 2019 avec Docker
- Exécuter l’image conteneur SQL Server 2022 avec Docker
Cet article de configuration fournit des scénarios d’utilisation supplémentaires dans les sections suivantes.
Se connecter et interroger
Vous pouvez vous connecter à et interroger SQL Server dans un conteneur à partir de l’extérieur du conteneur ou au sein du conteneur. Les sections suivantes détaillent les deux scénarios.
Outils en dehors du conteneur
Vous pouvez vous connecter à l’instance SQL Server sur votre hôte de conteneur à partir de n’importe quel outil externe Linux, Windows ou macOS qui prend en charge les connexions SQL. Certains outils courants sont les suivants :
L’exemple suivant utilise sqlcmd pour se connecter à SQL Server s’exécutant dans un conteneur. L’adresse IP dans la chaîne de connexion est l’adresse IP de l’ordinateur hôte qui exécute le conteneur.
Notes
Les versions plus récentes de sqlcmd (dans mssql-tools18) sont sécurisées par défaut. Si vous utilisez la version 18 ou ultérieure, vous devez ajouter l’option No
à sqlcmd pour spécifier que le chiffrement est facultatif, et non obligatoire.
sqlcmd -S 10.3.2.4 -U SA -P '<YourPassword>'
sqlcmd -S 10.3.2.4 -U SA -P "<YourPassword>"
sqlcmd -S 10.3.2.4 -U SA -P "<YourPassword>"
Si vous avez mappé un port hôte qui n’est pas la valeur 1433
par défaut, ajoutez ce port à la chaîne de connexion. Par exemple, si vous avez spécifié -p 1400:1433
dans votre commande docker run
, connectez-vous en spécifiant explicitement le port 1400.
sqlcmd -S 10.3.2.4,1400 -U SA -P '<YourPassword>'
sqlcmd -S 10.3.2.4,1400 -U SA -P "<YourPassword>"
sqlcmd -S 10.3.2.4,1400 -U SA -P "<YourPassword>"
Outils au sein du conteneur
À compter de SQL Server 2017 (14.x), les outils en ligne de commande SQL Server sont inclus dans l’image conteneur. Si vous joignez une invite de commandes interactive à l’image, vous pouvez exécuter les outils localement.
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,e69e056c702d
est l’ID de conteneur.docker exec -it e69e056c702d "bash"
Conseil
Vous n’avez pas toujours besoin de spécifier l’ID de conteneur entier. Vous ne devez spécifier que suffisamment de caractères pour l’identifier de manière unique. Ainsi, dans cet exemple, il peut suffire d’utiliser
e6
oue69
plutôt que l’ID complet. Pour déterminer l’ID du conteneur, exécutez la commandedocker ps -a
.Une fois dans le conteneur, connectez-vous localement avec sqlcmd en utilisant son chemin d’accès complet.
/opt/mssql-tools18/bin/sqlcmd -S localhost -U SA -P '<YourPassword>'
Notes
Les versions plus 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.Lorsque vous avez terminé avec sqlcmd, saisissez
exit
.Lorsque vous avez terminé avec l’invite de commandes interactive, saisissez
exit
. Le conteneur continue de s’exécuter une fois que vous avez quitté l’interpréteur de commandes bash interactif.
Vérifier la version du conteneur
Si vous voulez connaître la version de SQL Server dans un conteneur en cours d’exécution, exécutez la commande suivante pour l’afficher. Remplacez <Container ID or name>
par l’ID ou le nom du conteneur cible. Remplacez <YourStrong!Passw0rd>
par le mot de passe SQL Server pour le compte d'administrateur système (SA).
docker exec -it <Container ID or name> /opt/mssql-tools/bin/sqlcmd \
-S localhost -U SA -P '<YourStrong!Passw0rd>' \
-Q 'SELECT @@VERSION'
Notes
Les versions plus 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.
docker exec -it <Container ID or name> /opt/mssql-tools/bin/sqlcmd `
-S localhost -U SA -P "<YourStrong!Passw0rd>" `
-Q "SELECT @@VERSION"
Notes
Les versions plus 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.
docker exec -it <Container ID or name> /opt/mssql-tools/bin/sqlcmd ^
-S localhost -U SA -P "<YourStrong!Passw0rd>" ^
-Q "SELECT @@VERSION"
Notes
Les versions plus 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 aussi identifier la version et le numéro de la build de SQL Server pour une image conteneur cible. La commande suivante affiche la version SQL Server et les informations de version de l’image mcr.microsoft.com/mssql/server:2022-latest
. Pour ce faire, elle exécute un nouveau conteneur avec une variable d’environnement PAL_PROGRAM_INFO=1
. Le conteneur résultant s’arrête instantanément et la commande docker rm
le supprime.
docker run -e PAL_PROGRAM_INFO=1 --name sqlver \
-ti mcr.microsoft.com/mssql/server:2022-latest && \
docker rm sqlver
docker run -e PAL_PROGRAM_INFO=1 --name sqlver `
-ti mcr.microsoft.com/mssql/server:2022-latest; `
docker rm sqlver
docker run -e PAL_PROGRAM_INFO=1 --name sqlver ^
-ti mcr.microsoft.com/mssql/server:2022-latest && ^
docker rm sqlver
Les commandes précédentes affichent des informations de version semblables à la sortie suivante :
sqlservr
Version 16.0.1000.6
Build ID d81e9b6de06534e649bd57dd609aa3050f5e380f361b7f8a80a80eeb71e7422c
Build Type release
Git Version 2aede92f
Built at Tue Nov 01 06:11:40 GMT 2022
PAL
Build ID 754097e8f0db68f559e1cbc9d46952ac9fd518b5da9f12964ef40fc9033720e3
Build Type release
Git Version d88e3e1130
Built at Tue Nov 01 06:08:02 GMT 2022
Packages
system.security mssql-16.0.1000.6_26_official-release
system.certificates mssql-16.0.1000.6_26_official-release
sqlagent 16.0.1000.6
system.wmi 10.0.17763.2061.202107231
system.netfx 4.7.0.0.202104262
system mssql-16.0.1000.6_26_official-release
system.common 10.0.17763.2061.202107231
sqlservr 16.0.1000.6
secforwarderxplat 16.0.1000.6
Exécuter une image de conteneur SQL Server spécifique
Notes
- À compter de SQL Server 2019 (15.x) CU3, Ubuntu 18.04 est pris en charge.
- À compter de SQL Server 2019 (15.x) CU10, Ubuntu 20.04 est pris en charge.
- Vous pouvez récupérer la liste de toutes les étiquettes disponibles pour mssql/server sur https://mcr.microsoft.com/v2/mssql/server/tags/list.
Il existe des scénarios dans lesquels il est possible que vous ne souhaitiez pas utiliser la dernière image de conteneur SQL Server. Pour exécuter une image de conteneur SQL Server spécifique, procédez comme suit :
Identifiez la
tag
Docker pour la version que vous souhaitez utiliser. Pour voir les balises disponibles, consultez le Registre des artefacts Microsoft.Extrayez l’image de conteneur SQL Server avec la balise. Par exemple, pour extraire l’image
2019-CU18-ubuntu-20.04
, remplacez<image_tag>
dans la commande suivante par2019-CU18-ubuntu-20.04
.docker pull mcr.microsoft.com/mssql/server:<image_tag>
Pour exécuter un nouveau conteneur avec cette image, spécifiez le nom de la balise dans la commande
docker run
. Dans la commande suivante, remplacez<image_tag>
par la version que vous souhaitez exécuter.Important
La variable d’environnement
SA_PASSWORD
est dépréciée. UtilisezMSSQL_SA_PASSWORD
à la place.docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' -p 1401:1433 -d mcr.microsoft.com/mssql/server:<image_tag>
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" -p 1401:1433 -d mcr.microsoft.com/mssql/server:<image_tag>
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" -p 1401:1433 -d mcr.microsoft.com/mssql/server:<image_tag>
Vous pouvez également utiliser ces étapes pour rétrograder un conteneur existant. Par exemple, vous souhaiterez peut-être restaurer ou rétrograder un conteneur en cours d’exécution à des fins de dépannage ou de test. Pour rétrograder un conteneur en cours d’exécution, vous devez utiliser une technique de persistance pour le dossier de données. Suivez les mêmes étapes que celles décrites dans la section de mise à niveau, mais spécifiez le nom de balise de l’ancienne version lorsque vous exécutez le nouveau conteneur.
Exécuter des images conteneurs basées sur RHEL
La documentation pour les images conteneur SQL Server Linux pointe vers des conteneurs basés sur Ubuntu. À compter de SQL Server 2019 (15.x), il est possible d’utiliser des conteneurs basés sur Red Hat Enterprise Linux (RHEL). Un exemple d’image pour RHEL va ressembler à mcr.microsoft.com/mssql/rhel/server:2019-CU15-rhel-8
.
Par exemple, la commande suivante tire (pull) la mise à jour cumulative CU 18 du conteneur SQL Server 2019 (15.x) qui utilise RHEL 8 :
docker pull mcr.microsoft.com/mssql/rhel/server:2019-CU18-rhel-8.4
docker pull mcr.microsoft.com/mssql/rhel/server:2019-CU18-rhel-8.4
docker pull mcr.microsoft.com/mssql/rhel/server:2019-CU18-rhel-8.4
Exécuter des images de conteneur de production
Le guide de démarrage rapide de la section précédente exécute la version gratuite de l’édition Developer de SQL Server à partir du Registre des artefacts Microsoft. La plupart des informations s’appliquent toujours si vous souhaitez exécuter des images de conteneur de production, comme les éditions Enterprise, Standard ou Web. Toutefois, il existe quelques différences qui sont décrites ici.
Vous ne pouvez utiliser SQL Server dans un environnement de production que si vous disposez d’une licence valide. Vous pouvez vous procurer gratuitement une licence de production SQL Server Express ici. Les licences pour l’édition Standard et Entreprise de SQL Server sont disponibles via le programme de licence en volume Microsoft.
L’image de conteneur du développeur peut également être configurée pour exécuter les éditions de production.
Pour exécuter une édition de production, passez en revue les exigences et les procédures d’exécution dans le guide de démarrage rapide. Vous devez spécifier votre édition de production avec la variable d’environnement MSSQL_PID
. L’exemple suivant montre comment exécuter l’image conteneur de SQL Server 2022 (16.x) la plus récente pour la fonctionnalité de modification essentielle de l’Entreprise.
docker run --name sqlenterprise \
-e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' \
-e 'MSSQL_PID=EnterpriseCore' -p 1433:1433 \
-d mcr.microsoft.com/mssql/server:2022-latest
docker run --name sqlenterprise `
-e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" `
-e "MSSQL_PID=EnterpriseCore" -p 1433:1433 `
-d "mcr.microsoft.com/mssql/server:2022-latest"
docker run --name sqlenterprise ^
-e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" ^
-e "MSSQL_PID=EnterpriseCore" -p 1433:1433 ^
-d "mcr.microsoft.com/mssql/server:2022-latest"
Important
En passant la valeur Y
à la variable d’environnement ACCEPT_EULA
et une valeur d'édition à MSSQL_PID
, vous indiquez que vous disposez d’une licence valide et existante pour l’édition et la version de SQL Server que vous avez l’intention d’utiliser. Vous acceptez également que votre utilisation du logiciel SQL Server exécuté dans une image conteneur sera régie par les conditions de votre licence SQL Server.
Notes
Pour obtenir la liste complète des valeurs possibles pour MSSQL_PID
, consultez Configurer les paramètres de SQL Server avec des variables d’environnement sur Linux.
Exécuter plusieurs conteneurs SQL Server
Docker offre un moyen d’exécuter plusieurs conteneurs SQL Server sur le même ordinateur hôte. Utilisez cette approche pour les scénarios qui requièrent plusieurs instances de SQL Server sur le même hôte. Chaque conteneur doit s’exposer lui-même sur un port différent.
L’exemple suivant crée deux conteneurs SQL Server 2017 (14.x) et les associe aux ports 1401
et 1402
sur l’ordinateur hôte.
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' -p 1401:1433 -d mcr.microsoft.com/mssql/server:2017-latest
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' -p 1402:1433 -d mcr.microsoft.com/mssql/server:2017-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" -p 1401:1433 -d mcr.microsoft.com/mssql/server:2017-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" -p 1402:1433 -d mcr.microsoft.com/mssql/server:2017-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" -p 1401:1433 -d mcr.microsoft.com/mssql/server:2017-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" -p 1402:1433 -d mcr.microsoft.com/mssql/server:2017-latest
L’exemple suivant crée deux conteneurs SQL Server 2019 (15.x) et les associe aux ports 1401
et 1402
sur l’ordinateur hôte.
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' -p 1401:1433 -d mcr.microsoft.com/mssql/server:2019-latest
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' -p 1402:1433 -d mcr.microsoft.com/mssql/server:2019-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" -p 1401:1433 -d mcr.microsoft.com/mssql/server:2019-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" -p 1402:1433 -d mcr.microsoft.com/mssql/server:2019-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" -p 1401:1433 -d mcr.microsoft.com/mssql/server:2019-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" -p 1402:1433 -d mcr.microsoft.com/mssql/server:2019-latest
L’exemple suivant crée deux conteneurs SQL Server 2022 (16.x) et les mappe aux ports 1401
et 1402
sur la machine hôte.
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' -p 1401:1433 -d mcr.microsoft.com/mssql/server:2022-latest
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' -p 1402:1433 -d mcr.microsoft.com/mssql/server:2022-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" -p 1401:1433 -d mcr.microsoft.com/mssql/server:2022-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" -p 1402:1433 -d mcr.microsoft.com/mssql/server:2022-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" -p 1401:1433 -d mcr.microsoft.com/mssql/server:2022-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" -p 1402:1433 -d mcr.microsoft.com/mssql/server:2022-latest
Il existe maintenant deux instances de SQL Server s’exécutant dans des conteneurs distincts. Les clients peuvent se connecter à chaque instance SQL Server en utilisant l’adresse IP de l’hôte de conteneur et du numéro de port pour le conteneur.
Notes
Les versions plus récentes de sqlcmd (dans mssql-tools18) sont sécurisées par défaut. Si vous utilisez la version 18 ou ultérieure, vous devez ajouter l’option No
à sqlcmd pour spécifier que le chiffrement est facultatif, et non obligatoire.
sqlcmd -S 10.3.2.4,1401 -U SA -P '<YourPassword>'
sqlcmd -S 10.3.2.4,1402 -U SA -P '<YourPassword>'
sqlcmd -S 10.3.2.4,1401 -U SA -P "<YourPassword>"
sqlcmd -S 10.3.2.4,1402 -U SA -P "<YourPassword>"
sqlcmd -S 10.3.2.4,1401 -U SA -P "<YourPassword>"
sqlcmd -S 10.3.2.4,1402 -U SA -P "<YourPassword>"
Mettre à niveau SQL Server dans les conteneurs
Pour mettre à niveau l’image de conteneur avec Docker, commencez par identifier la balise pour la version de votre mise à niveau. Extrayez cette version à partir du registre à l’aide de la commande docker pull
:
docker pull mcr.microsoft.com/mssql/server:<image_tag>
Cela met à jour l’image de SQL Server pour les nouveaux conteneurs que vous créez, mais ne met pas à jour SQL Server dans les conteneurs en cours d’exécution. Pour ce faire, vous devez créer un nouveau conteneur avec la dernière image de conteneur SQL Server et migrer vos données vers ce nouveau conteneur.
Assurez-vous que vous utilisez une des techniques de persistance des données pour votre conteneur SQL Server existant. Cela vous permet de démarrer un nouveau conteneur avec les mêmes données.
Arrêtez le conteneur SQL Server à l'aide de la commande
docker stop
.Créez un conteneur SQL Server avec
docker run
et spécifiez un répertoire hôte mappé ou un conteneur de volume de données. Veillez à utiliser la balise spécifique pour votre mise à niveau SQL Server. Le nouveau conteneur utilise désormais une nouvelle version de SQL Server avec vos données SQL Server existantes.Important
La mise à niveau est uniquement prise en charge entre RC1, RC2 et GA pour l’instant.
Vérifiez vos bases de données et vos données dans le nouveau conteneur.
Si vous le souhaitez, supprimez l'ancien conteneur avec
docker rm
.
Contenu connexe
- Bien démarrer avec les images conteneur SQL Server 2017 (14.x) sur Docker en suivant le démarrage rapide
- Bien démarrer avec les images conteneur SQL Server 2019 (15.x) sur Docker en suivant le démarrage rapide
- Bien démarrer avec les images conteneur SQL Server 2022 (16.x) sur Docker en suivant le guide de démarrage rapide
- Référencer une autre configuration et une personnalisation pour des conteneurs Docker
- Consulter le dépôt GitHub mssql-docker pour obtenir des ressources, des commentaires et les problèmes connus
- Résolution des problèmes liés aux conteneurs Docker SQL Server
- Explorer la haute disponibilité des conteneurs SQL Server
- Sécuriser des conteneurs Docker SQL Server
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