Passer au contenu du pied de page
Iron Academy Logo
Apprendre le C#
Apprendre le C#

Autres catégories

SQL Server dans Docker sur Linux

[[academy-video-youtube({"vid": "-H5mMexO4_I", "start_time": "0", "title": "SQL Server in Docker on Linux", "creator": "Tim Corey", "length": "18m 20s"})]]

Installer un moteur de base de données directement sur une machine de développement est un raccourci courant qui crée des problèmes à long terme. Les serveurs de base de données sont conçus pour du matériel dédié. Ils consomment beaucoup de mémoire et de CPU, accumulent une dette de configuration lorsque vous installez plusieurs versions, et compliquent les mises à jour lorsque vous devez tester une autre version. Les conteneurs Docker résolvent tout cela en isolant chaque instance de base de données dans un environnement léger et jetable.

Dans sa vidéo "SQL Server in Docker on Linux", Tim Corey démontre comment lancer une instance Microsoft SQL Server sur Linux à l'aide d'une seule commande Docker, s'y connecter depuis VS Code et exécuter des requêtes. Il montre également comment exécuter plusieurs versions de SQL Server côte à côte et comment effectuer un nettoyage lorsque vous avez terminé. Si vous suivez la série C# sur Linux ou si vous souhaitez une méthode rapide et répétable pour exécuter un SQL Server pour le développement, ce guide couvre l'installation complète.

Pourquoi Docker au lieu d'une installation locale

[0:00 - 0:57] Tim commence par l'affaire contre les installations de bases de données natives. L'argument central : les moteurs de bases de données sont conçus pour des serveurs dédiés. Les installer localement signifie qu'ils consomment des ressources que vous les utilisiez ou non, et gérer plusieurs versions (SQL 2019, 2022, 2025) sur le même système devient rapidement une charge de maintenance.

Les conteneurs Docker inversent ce modèle. Chaque base de données s'exécute dans son propre environnement isolé. Démarrez-la quand vous en avez besoin, arrêtez-la quand vous n'en avez pas besoin. Supprimez-la et redémarrez de zéro avec zéro configuration restante. Pour le développement et les tests, cette approche est plus rapide à mettre en place, plus propre à maintenir, et plus flexible qu'une installation traditionnelle.

Correction de la politique de redémarrage de Portainer

[0:57 - 2:17] Avant de lancer SQL Server, Tim remarque que Portainer (l'outil de gestion GUI pour les conteneurs Docker de l'épisode précédent) n'est pas en cours d'exécution. Il s'est arrêté lorsque la machine s'est éteinte pour la dernière fois parce qu'aucune politique de redémarrage n'était définie.

La solution est deux commandes :

// Set Portainer to restart automatically (unless manually stopped)
docker update --restart unless-stopped portainer

// Start it now
docker start portainer
// Set Portainer to restart automatically (unless manually stopped)
docker update --restart unless-stopped portainer

// Start it now
docker start portainer

La politique unless-stopped signifie que Portainer redémarrera automatiquement au redémarrage mais restera arrêté si vous l'arrêtez explicitement. Après le démarrage, Portainer est accessible à localhost:9000 dans le navigateur. Tim recommande cette politique pour les outils de gestion que vous souhaitez faire fonctionner en permanence, tout en maintenant les conteneurs de bases de données sur démarrage manuel.

La commande Docker Run pour SQL Server

[2:17 - 6:09] L'ensemble de l'installation de SQL Server se résume à une seule commande. Tim la transfère depuis sa machine Windows en utilisant LocalSend (couvert dans la vidéo de quête annexe précédente), puis la décompose pièce par pièce :

// Single command to launch SQL Server 2025 in Docker
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Test12345" -p 1433:1433 --name sql2025 mcr.microsoft.com/mssql/server:2025-latest
// Single command to launch SQL Server 2025 in Docker
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Test12345" -p 1433:1433 --name sql2025 mcr.microsoft.com/mssql/server:2025-latest

Chaque drapeau sert un but spécifique. Le drapeau -e "ACCEPT_EULA=Y" accepte l'accord de licence de Microsoft. Le drapeau -e "SA_PASSWORD=Test12345" définit le mot de passe de l'administrateur système en texte clair, ce que Tim reconnaît comme acceptable pour le développement local mais qui ne devrait jamais être utilisé pour une production. Le drapeau -p 1433:1433 mappe le port SQL Server interne du conteneur au même port sur la machine hôte. Le drapeau --name sql2025 donne au conteneur une étiquette lisible par l'homme. Et le tag d'image 2025-latest extrait la version la plus récente de SQL Server 2025 du registre de conteneurs de Microsoft.

Après avoir exécuté la commande, Docker télécharge les couches d'images, les extrait, et démarre le serveur. Tout le processus prend quelques minutes, dont la majorité est le téléchargement initial.

Vérification dans Portainer

[6:09 - 7:04] De retour dans Portainer, le nouveau conteneur SQL Server apparaît dans la liste des conteneurs, affichant son statut comme en cours d'exécution. Tim fait un choix délibéré ici : pas de montage de volume pour la persistance des données. Si le conteneur est supprimé, les bases de données à l'intérieur disparaissent également.

C'est intentionnel pour une configuration de développement. Repartir de zéro signifie pas de données de test accumulées, pas de dérive de schéma des expériences précédentes, et pas de problèmes "ça fonctionne sur ma machine" causés par un état restant. Si vous devez conserver des bases de données avant de supprimer un conteneur, vous pouvez les exporter d'abord, mais l'approche de la table rase est le flux de travail préféré pour le travail local.

Connexion depuis VS Code

[7:04 - 8:50] Pour gérer la base de données, Tim installe l'extension SQL Server pour VS Code de Microsoft. Après l'installation, un nouveau panneau SQL Server apparaît dans la barre latérale où vous pouvez ajouter des connexions.

Les paramètres de connexion sont minimes. Le nom du serveur est . (point), ce qui signifie localhost. Étant donné que le conteneur mappe le port 1433 (le port par défaut de SQL Server), aucun numéro de port ne doit être spécifié. Le nom d'utilisateur est sa, le mot de passe est celui de la commande Docker, et la base de données par défaut est master. Faites confiance au certificat du serveur lorsque cela est demandé.

Une fois connecté, VS Code affiche l'icône Docker à côté de la connexion, confirmant qu'il a détecté l'environnement conteneurisé. Les bases de données système (master, model, msdb, tempdb) apparaissent dans l'arborescence, prêtes à l'emploi.

Création d'une base de données et exécution de requêtes

[8:50 - 12:45] Une fois la connexion établie, Tim crée une nouvelle base de données appelée PeopleDB directement depuis la barre latérale de VS Code. À l'intérieur, il crée une table People à l'aide du concepteur visuel, ajoutant une colonne Id à auto-incrémentation, une colonne FirstName, et une colonne LastName (toutes deux NVARCHAR(50), non nulles).

Puis il ouvre une nouvelle fenêtre de requête et insère des données de test :

INSERT INTO dbo.People (FirstName, LastName)
VALUES
    ('Tim', 'Corey'),
    ('Sue', 'Storm'),
    ('Dave', 'Corey')
INSERT INTO dbo.People (FirstName, LastName)
VALUES
    ('Tim', 'Corey'),
    ('Sue', 'Storm'),
    ('Dave', 'Corey')

Exécuter un SELECT confirme que les lignes sont en place :

SELECT * FROM dbo.People
-- Returns: Tim Corey, Sue Storm, Dave Corey

SELECT * FROM dbo.People WHERE LastName = 'Corey'
-- Returns: Tim Corey, Dave Corey
SELECT * FROM dbo.People
-- Returns: Tim Corey, Sue Storm, Dave Corey

SELECT * FROM dbo.People WHERE LastName = 'Corey'
-- Returns: Tim Corey, Dave Corey

Le cycle complet (création de base de données, conception de table, insertion de données, requête avec filtres) prend seulement quelques minutes. Tout s'exécute à l'intérieur du conteneur Docker, géré via VS Code, sans SQL Server installé sur la machine hôte.

Arrêt, démarrage, et gestion des ressources

[12:45 - 14:20] Lorsque vous avez terminé de travailler avec SQL Server, l'arrêter est un clic dans Portainer ou une commande dans le terminal :

docker stop sql2025
docker stop sql2025

Un conteneur arrêté libère toutes les ressources CPU et mémoire. La seule chose qu'il continue de consommer est l'espace disque pour les fichiers d'image et de conteneur, ce qui est comparable (et généralement plus petit) à une installation native de SQL Server.

Tim souligne que c'est l'avantage principal par rapport à une installation traditionnelle. Un SQL Server installé localement s'exécute en tant que service Windows ou Linux, consommant des ressources en permanence. Un conteneur Docker n'utilise des ressources que lorsque vous choisissez de l'exécuter.

Exécution de plusieurs versions côte à côte

[14:20 - 17:17] L'une des fonctionnalités les plus pratiques de Docker pour le développement de bases de données est la capacité à exécuter plusieurs versions simultanément. Tim démontre en lançant SQL Server 2022 aux côtés du conteneur 2025 existant :

// SQL Server 2022 on a different port
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Test12345" -p 2022:1433 --name sql2022 mcr.microsoft.com/mssql/server:2022-latest
// SQL Server 2022 on a different port
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Test12345" -p 2022:1433 --name sql2022 mcr.microsoft.com/mssql/server:2022-latest

La principale différence est la correspondance de port : -p 2022:1433 mappe le port interne 1433 du conteneur au port 2022 sur l'hôte. Cela évite un conflit de port avec l'instance 2025 utilisant déjà 1433. Une fois le téléchargement terminé, les deux conteneurs apparaissent dans Portainer, les deux exécutés en même temps.

C'est utile lorsqu'un client exécute SQL Server 2022 en production mais que l'équipe développe contre 2025. Passer d'une version à l'autre ne nécessite aucune réinstallation, juste de démarrer le bon conteneur. Toutes les images SQL Server disponibles (2017, 2019, 2022, 2025) sont listées à mcr.microsoft.com, et la même approche fonctionne pour MySQL, PostgreSQL, MongoDB, et Cosmos DB.

Récapitulatif : Une commande pour un environnement de base de données complet

[17:17 - 17:47] La démonstration montre qu'une seule commande Docker remplace ce qui était auparavant un processus d'installation en plusieurs étapes avec des assistants de configuration, une gestion des services, et des conflits de version. Le conteneur démarre en quelques minutes, ne fonctionne que lorsque nécessaire, et peut être supprimé sans laisser de traces sur le système hôte.

Pour les développeurs travaillant sur plusieurs projets avec des exigences de bases de données différentes, ce modèle s'adapte proprement. Chaque projet obtient son propre conteneur, sa propre version, et ses propres données isolées.

Conclusion

[17:47 - 18:20] En résumé : SQL Server sur Linux fonctionne dans Docker avec une seule commande docker run. Connectez-vous à partir de VS Code en utilisant l'extension SQL Server, créez des bases de données et des tables via la barre latérale, et écrivez des requêtes comme vous le feriez contre n'importe quelle autre instance SQL Server. Lorsque vous avez terminé, arrêtez le conteneur et récupérez les ressources.

La combinaison de Docker pour la gestion des bases de données et de VS Code pour l'interrogation vous offre un flux de travail de développement SQL complet sur Linux sans installation native de base de données requise.

Exemple d'astuce : Si vous avez besoin de tester une version spécifique de SQL Server, consultez mcr.microsoft.com pour tous les tags disponibles. Vous pouvez exécuter 2017, 2019, 2022 et 2025 simultanément en attribuant à chaque conteneur un port hôte différent (1433, 2019, 2022, 2025). Nommez-les de manière descriptive (sql2019, sql2022) afin que la sortie de Portainer et docker ps reste lisible.

Regardez la vidéo complète sur sa chaîne YouTube et obtenez plus d'informations sur le développement C# avec des bases de données sur Linux.

Hero Worlddot related to SQL Server dans Docker sur Linux
Hero Affiliate related to SQL Server dans Docker sur Linux

Gagnez plus en partageant ce que vous aimez

Vous créez du contenu pour les développeurs travaillant avec .NET, C#, Java, Python ou Node.js ? Transformez votre expertise en revenu supplémentaire !

Équipe de soutien Iron

Nous sommes en ligne 24 heures sur 24, 5 jours sur 7.
Chat
Email
Appelez-moi