Cours
Imaginez pouvoir créer un cluster Docker Swarm multi-nœuds en quelques secondes sans installer le moindre octet sur votre ordinateur portable. Pendant des années, j'ai observé les développeurs rencontrer des difficultés avec les installations Docker, se débattre avec les dépendances système, résoudre les erreurs d'autorisation et s'inquiéter de la capacité de leur matériel vieillissant à répondre aux exigences en matière de ressources.
Ensuite, j'ai découvert Play with Docker, et cela a complètement transformé ma manière d'enseigner et d'apprendre la conteneurisation.
Play with Docker est un environnement de test gratuit accessible via un navigateur qui vous permet d'accéder instantanément à des machines virtuelles Alpine Linux sur lesquelles vous pouvez créer et exécuter des conteneurs Docker. Que vous soyez un praticien junior des données qui commence tout juste son parcours dans la conteneurisation ou un professionnel chevronné souhaitant tester rapidement une nouvelle fonctionnalité Docker, PWD offre un environnement accessible et sans risque.
Dans ce tutoriel complet, je vous guiderai à travers toutes les étapes, de votre premier conteneur à l'orchestration multi-conteneurs avec Docker Compose. À la fin, vous disposerez d'un serveur web conteneurisé fonctionnant sans jamais quitter votre navigateur.
Si vous débutez avec Docker et ses concepts, je vous recommande de suivre notre cours d'introduction à Docker ou d'étudier les Concepts de conteneurisation et de virtualisation.
Qu'est-ce que Play With Docker ?
Play with Docker (PWD) est un environnement de test Docker gratuit et temporaire qui s'exécute directement dans votre navigateur web. Créé par Marcos Liljedhal et Jonathan Leibiusky, deux capitaines de Docker, PWD est né d'un projet hackathon et est rapidement devenu un outil essentiel pour la communauté Docker.
À la base, PWD utilise la technologie Docker-in-Docker (dind), dans laquelle des conteneurs Docker s'exécutent à l'intérieur d'autres conteneurs Docker. Cette architecture imbriquée peut sembler complexe, mais elle vous permet d'expérimenter toutes les fonctionnalités de Docker, y compris les fonctionnalités avancées telles que les clusters Swarm multi-nœuds, sans affecter votre machine locale.
La plateforme gère toute la complexité en arrière-plan, vous offrant une interface de terminal épurée. Il fournit des instances Alpine Linux, des distributions Linux légères idéales pour les charges de travail en conteneur. Alpine est délibérément minimaliste, avec une taille d'image de base d'environ 5 Mo seulement, contre plus de 100 Mo pour Ubuntu.
Cette efficacité se traduit par des téléchargements plus rapides et des temps de démarrage réduits. Chaque instance est fournie avec une expérience terminal complète, vous offrant la même puissance de ligne de commande que celle dont vous disposeriez sur une installation locale, y compris un shell, Docker CLI et Docker Compose.
PWD élimine les obstacles à l'installation pour les débutants tout en offrant aux utilisateurs avancés un espace pour tester des fonctionnalités d'orchestration telles que Docker Swarm. Vous pouvez créer des clusters multi-nœuds, tester différentes configurations réseau et évaluer la planification des conteneurs, le tout sans les contraintes liées à la gestion des machines virtuelles ou des instances cloud.
Jouer avec Docker vs Docker Desktop
Maintenant que vous comprenez bien ce qu'offre PWD, vous vous demandez probablement quand l'utiliser plutôt que d'installer Docker Desktop localement. Comprendre quand utiliser Play with Docker plutôt que Docker Desktop vous permettra de gagner du temps et d'éviter toute frustration.
Play with Docker offre un accès instantané via navigateur, sans installation, sans consommation de ressources locales et avec une prise en charge complète de Docker Swarm, le tout entièrement gratuit. Cependant, les sessions ne durent que deux heures avant que tout ne soit supprimé, les performances sont limitées et il n'y a pas de stockage persistant après l'expiration de la session.
Remarque : La documentation PWD indique une durée de session de quatre heures, mais lors de mon essai, celle-ci n'a en réalité duré que deux heures. Il semble que la documentation ne soit pas à jour.
Docker Desktop s'exécute localement sur votre machine, offrant un stockage persistant, de meilleures performances et une intégration transparente avec des outils de développement tels que Visual Studio Code. Vous pouvez travailler sur des projets à long terme sans contraintes de durée de session.
|
Caractéristique |
Jouer avec Docker |
Docker Desktop |
|
Configuration |
Aucune installation requise, accessible via un navigateur |
Nécessite une installation |
|
Durée de la session |
Limite de 2 heures |
Aucune limite de temps |
|
Performance |
Ressources partagées, limitées |
Ressources système complètes |
|
Stockage |
Temporaire, supprimé après la session |
Persistant sur le disque local |
|
Coût |
Gratuit |
Gratuit pour un usage personnel ; payant pour les entreprises. |
|
Impact sur le système |
Aucun (basé sur le cloud) |
Utilise le processeur et la mémoire locaux |
|
Assistance Swarm |
Prise en charge native |
Nécessite une configuration supplémentaire |
|
Intégration IDE |
Aucun |
Excellent (VS Code, etc.) |
Quand utiliser Play With Docker
L'utilisation de Docker est particulièrement recommandée dans les scénarios suivants :
- Tests ponctuels
- Suivre les tutoriels
- Utilisation d'ordinateurs portables ou de Chromebooks peu performants
- Partager des URL de sessions en direct avec des collègues à des fins de débogage ou de démonstration
Quand utiliser Docker Desktop
Docker Desktop devient indispensable pour
- Travail de développement quotidien
- Intégration IDE
- Projets de longue durée s'étalant sur plusieurs semaines ou mois
- Charges de travail gourmandes en ressources nécessitant des réseaux et des volumes personnalisés
Commencer à utiliser Play avec Docker
Maintenant que vous savez quand PWD est l'outil adapté à vos besoins, nous vous invitons à vous préparer et à démarrer votre première session.
Configuration de Play avec Docker
Avant de commencer, il est nécessaire de disposer d'un compte Docker Hub. Veuillez consulter le Docker Hub pour en créer un. Si vous n'en disposez pas encore, veuillez simplement fournir une adresse e-mail et un mot de passe.

Veuillez vous connecter à Docker
Veuillez vous rendre sur le site Web site Web Play with Docker et connectez-vous à l'aide de vos identifiants Docker Hub. Après vous être authentifié, veuillez cliquer sur le bouton vert « Démarrer » pour générer votre session. En quelques secondes, PWD fournit un nouvel environnement Alpine Linux dans votre navigateur avec un compte à rebours indiquant les deux heures restantes de votre session.
Navigation dans le tableau de bord Play with Docker
L'interface PWD est simple mais performante. Veuillez cliquer sur « Ajouter une nouvelle instance » pour créer de nouveaux conteneurs Alpine Linux. Vous pouvez exécuter jusqu'à 5 instances simultanément pour tester des clusters multi-nœuds. La fenêtre principale du terminal fournit un shell bash complet avec Docker préinstallé.
Veuillez surveiller le compte à rebours. Lorsque le compteur atteint zéro, toutes les données sont supprimées et il n'est plus possible de prolonger la session.

Tableau de bord dans Play avec Docker
s utiles: Les opérations standard de copier-coller dans l' Ctrl+V ne fonctionnent généralement pas dans PWD. Veuillez utiliser Ctrl+Insert pour copier et Shift+Insert pour coller. Veuillez tester immédiatement votre raccourci de collage afin d'éviter toute frustration.
Opérations principales en cours avec Docker
Une fois votre environnement PWD prêt et l'interface maîtrisée, il est temps de lancer votre premier conteneur et d'apprendre les commandes Docker essentielles.
Exécution de votre premier conteneur
Déployons un serveur web Nginx afin de mieux appréhender les images et les conteneurs. Veuillez exécuter la commande suivante :
docker run -d -p 80:80 nginx
Voici ce qui se produit : docker run crée et démarre un nouveau conteneur. Le drapeau d'-d, l'exécute en mode détaché (arrière-plan). -p 80:80 mappe le port 80 de l'hôte au port 80 du conteneur. nginx est le nom de l'image Docker.
Considérez une image Docker comme une recette. La configuration Nginx dans ce cas. Le conteneur en cours d'exécution correspond au gâteau que vous préparez à partir de cette recette. Il est possible de créer plusieurs gâteaux (conteneurs) à partir d'une seule recette (image).
Pour gérer votre conteneur :
docker ps # Show running containers
docker stop <id> # Stop a container
docker rm <id> # Remove a stopped container
Seuls les premiers caractères de l'identifiant du conteneur sont nécessaires. Docker détermine lequel vous souhaitez utiliser.
Redirection de port dans Play avec Docker
La redirection de port dans PWD fonctionne différemment de la redirection de port locale. Lorsque vous exposez un port, PWD crée automatiquement une URL dynamique pour y accéder.
Après avoir exécuté le conteneur Nginx, veuillez consulter le haut de votre écran PWD sous IP. Veuillez cliquer sur « Ouvrir le port » et ajouter « 80 ». Un nouvel onglet de navigateur s'ouvrira avec une URL unique telle que http://ip-.direct.labs.play-with-docker.com.

Redirection de port avec Docker
Vous n'accédez pas à localhost ici. PWD génère des URL spéciales qui acheminent le trafic Internet vers votre conteneur spécifique. Cela signifie que vous pouvez partager ces URL avec vos collègues afin de leur présenter votre travail en temps réel.
Débogage et inspection
Si les choses ne se déroulent pas comme prévu, vous aurez besoin d'outils pour examiner ce qui se passe à l'intérieur de vos conteneurs.
Lors du dépannage, ces commandes vous permettent d'examiner le contenu des conteneurs :
docker logs <container-id> # View container output
docker ps # Show running container status
docker inspect <container-id> # Get detailed JSON configuration
Veuillez exécuter docker logs après avoir cliqué sur le lien du port 80, et vous pourrez observer la requête de votre navigateur dans les journaux d'accès Nginx. Ces informations en temps réel vous permettent de mieux appréhender le flux des requêtes dans votre application.

Journaux Docker en action avec Docker
Une fois ces opérations de base maîtrisées, vous êtes prêt à aller au-delà de l'exécution d'images pré-construites et à commencer à créer vos propres conteneurs personnalisés.
Création d'images et gestion des données dans Play avec Docker
Maintenant que nous avons abordé les opérations de base relatives aux conteneurs, nous allons nous intéresser à la création de vos propres images personnalisées. C'est là que réside la véritable puissance de Docker. La possibilité d'intégrer vos applications avec toutes leurs dépendances dans des images portables et reproductibles.
Rédaction d'un fichier Dockerfile de base
Les fichiers Dockerfiles automatisent la création d'images à l'aide d'instructions textuelles. Au lieu de configurer manuellement un conteneur à chaque fois, il suffit de rédiger un Dockerfile une seule fois, et Docker se charge du reste.

Créer un fichier Dockerfile dans Play avec Docker
Tout d'abord, veuillez créer le fichier Dockerfile dans le terminal :
touch Dockerfile
Veuillez ensuite cliquer sur le bouton « Éditeur » dans PWD et ajouter une image simple :
FROM alpine
CMD ["echo", "Hello DataCamp"]
Enfin, veuillez créer et exécuter le fichier Dockerfile. L'-t e nomme (ou « balise ») votre image, ce qui facilite sa référence. La commande ` . ` indique à Docker d'utiliser le répertoire actuel comme contexte de compilation, c'est-à-dire l'emplacement où Docker trouve le fichier Dockerfile et tous les fichiers dont il a besoin. Vous constaterez que Docker exécute chaque instruction et affiche les identifiants des couches.
docker build -t my-first-image .
docker run my-first-image

Créer une image Docker dans Play avec Docker
Vous verrez s'afficher « Bonjour DataCamp ». Félicitations. Vous avez créé votre première image personnalisée. Cet exemple simple illustre le processus de base : rédiger des instructions, créer une image, exécuter un conteneur.
Cependant, il existe un défi majeur auquel nous devons faire face : que deviennent vos données lorsque les conteneurs sont arrêtés ou supprimés ?
Persistance des données dans Play avec Docker
Il est essentiel de bien comprendre la persistance des données pour travailler efficacement avec les conteneurs. Par défaut, les conteneurs sont éphémères de par leur conception : lorsque vous supprimez un conteneur, toutes les modifications de fichiers, tous les enregistrements de base de données et toutes les entrées de journal disparaissent instantanément.
Cela peut sembler problématique, mais c'est en réalité l'une des principales fonctionnalités de Docker. Les conteneurs éphémères sont faciles à remplacer, à dimensionner et à déboguer, car ils sont jetables.
Cependant, qu'en est-il des données que vous devez conserver ? C'est là que les volumes Docker entrent en jeu. Un volume est une zone de stockage gérée par Docker qui existe en dehors du système de fichiers du conteneur. Considérez-le comme une clé USB que vous pouvez brancher sur différents supports. Les données restent sur le disque même lorsque vous le déconnectez d'un conteneur et le connectez à un autre.

Conteneur Docker par rapport à Volume Docker
Permettez-moi de vous expliquer comment cela fonctionne dans la pratique. Créer et utiliser un volume :
docker volume create mydata
docker run -it -v mydata:/data alpine sh
Le drapeau ` -v mydata:/data ` monte le volume ` mydata ` à l'emplacement ` /data ` à l'intérieur du conteneur. Tout ce qui est écrit dans /data est en réalité stocké dans le volume. Veuillez créer un fichier de test :
echo "This data persists!" > /data/important.txt
echo "Container ID: $(hostname)" >> /data/important.txt
exit
Le conteneur s'est arrêté et a disparu. Veuillez maintenant démarrer un conteneur entièrement nouveau avec le même volume :
docker run -it -v mydata:/data alpine sh
cat /data/important.txt

Persistance des données à l'aide des volumes Docker
Le fichier est toujours présent, avec l'identifiant de l'ancien conteneur. Les données ont été préservées car elles étaient stockées dans le volume, et non dans le système de fichiers temporaire du conteneur. Vous pouvez associer ce même volume à autant de conteneurs que nécessaire, et ils verront tous les mêmes données.
Cependant, et ceci est crucial pour les utilisateurs PWD, même les volumes sont supprimés lorsque votre session de deux heures expire. Les volumes sont conservés au sein d'une session, mais ne sont pas transférés d'une session à l'autre.
Il est essentiel de comprendre la persistance des données, mais la plupart des applications réelles impliquent plusieurs services interconnectés. C'est là qu'intervient Docker Compose devient essentiel.
Orchestration de conteneurs avec Docker Compose
Une fois les conteneurs individuels maîtrisés, il est temps de s'attaquer aux applications concrètes, qui consistent rarement en un seul service. Les applications modernes comprennent généralement plusieurs composants : une interface Web, une API backend, une base de données, un cache et éventuellement une file d'attente de messages. Gérer tous ces éléments à l'aide de commandes d'docker run s distinctes peut s'avérer extrêmement complexe en termes de coordination.
Pourquoi utiliser Docker Compose ?
Imaginez le scénario suivant : Vous déployez une application qui nécessite un serveur web, une base de données PostgreSQL et un cache Redis.
Sans Compose, il serait nécessaire d'utiliser trois commandes distinctes d' docker run, chacune avec de nombreux indicateurs pour la mise en réseau, le mappage des ports, le montage des volumes et les variables d'environnement. Il est nécessaire de se souvenir de l'ordre exact dans lequel les démarrer (d'abord la base de données, puis le cache, puis le serveur web), et si un problème survient, le débogage implique de rechercher dans plusieurs fenêtres de terminal.
Docker Compose résout ce défi d'orchestration de manière élégante. Au lieu de jongler avec plusieurs commandes, vous définissez l'ensemble de votre application multi-conteneurs dans un seul fichier YAML appelé docker-compose.yml. Ce fichier constitue la source unique de vérité pour l'architecture de votre application. Il décrit tous les services, leurs configurations, la manière dont ils se connectent les uns aux autres et les volumes qu'ils utilisent.
Avec Compose, le déploiement de l'ensemble de votre pile se fait à l'aide d'une seule commande : ` docker-compose up`. Le démontage est tout aussi simple : docker-compose down. Cette approche déclarative rend l'infrastructure reproductible. Toute personne peut cloner votre référentiel et exécuter l'ensemble de votre pile d'applications à l'aide d'une seule commande, quel que soit son système d'exploitation ou sa configuration locale.
La structure du fichier Docker Compose
Créons un fichier Docker Compose de base.
Veuillez d'abord créer le fichier dans le terminal à l'aide de la commande « touch docker-compose.yml », puis cliquez sur « Editor » dans PWD et ajoutez les éléments suivants au fichier :
services:
web:
image: nginx
ports:
- "80:80"
redis:
image: redis
La section Services définit chaque conteneur. Les noms de service (tels que web et redis) deviennent des noms d'hôte sur le réseau Docker. La clé d'image indique quelle image Docker Hub utiliser. Veuillez le déployer :
docker-compose up -d
Maintenant que les deux conteneurs sont en cours d'exécution, vous vous demandez peut-être comment ils se trouvent et communiquent entre eux.
Réseautage et découverte de services
Compose crée automatiquement un réseau reliant tous les services, permettant ainsi la découverte des services. Les conteneurs communiquent en utilisant des noms de service comme noms d'hôte.
Veuillez vérifier cela en accédant au conteneur Web et en effectuant un ping vers Redis :
docker-compose exec web sh
apt-get update && apt-get install -y iputils-ping
ping redis
Les pings réussis démontrent que les conteneurs peuvent communiquer. Le conteneur web accède à redis sans connaître son adresse IP. Le DNS interne de Docker résout automatiquement les noms de service pour corriger les adresses des conteneurs.
Dépannage et meilleures pratiques dans Play With Docker
Au fur et à mesure que vous travaillerez avec des personnes handicapées, vous rencontrerez des défis courants. Voici comment les gérer efficacement.
« Session expirée »
La limite de deux heures constitue la principale contrainte pour les personnes handicapées. Lorsque le minuteur atteint zéro, tout disparaît, y compris les instances et les données. Travaillez efficacement en préparant le code localement avant de le coller dans PWD, tout en conservant des sauvegardes. Veuillez transférer les images personnalisées vers Docker Hub avant la fin de votre session :
docker tag my-first-image yourusername/my-first-image
docker push yourusername/my-first-image
Concentrez-vous sur un concept par session plutôt que de construire des systèmes complexes. La limite de deux heures est généreuse pour l'apprentissage, veuillez donc diviser le travail en plusieurs parties distinctes.
Erreurs de port 80/443
Contrairement à Docker local, où vous accédez aux conteneurs via localhost, PWD utilise des URL dynamiques. Veuillez ne pas tenter d'accéder à localhost:80. Veuillez cliquer sur l'icône du port en haut de l'interface PWD. Si les badges n'apparaissent pas immédiatement, veuillez patienter quelques secondes ou actualiser votre navigateur.
Meilleures pratiques
De plus, veuillez garder à l'esprit les meilleures pratiques suivantes :
- Veuillez utiliser des images de base de petite taille telles qu'Alpine (5 Mo contre plus de 100 Mo pour Ubuntu) afin de réduire la consommation de bande passante.
- Veuillez éviter d'exécuter des conteneurs en tant qu'administrateur root, sauf si cela est absolument nécessaire.
- Veuillez ne jamais utiliser d'identifiants réels dans PWD, car il s'agit d'une plateforme publique.
- Veuillez rédiger des fichiers Dockerfiles clairs, accompagnés de commentaires expliquant vos choix.
- Veuillez vous assurer que les images se concentrent sur une seule responsabilité.
Conclusion
Vous avez couvert un terrain considérable dans ce tutoriel. Vous avez découvert ce qu'est Play with Docker, quand l'utiliser par rapport à Docker Desktop, vous avez exécuté votre premier conteneur, compris le transfert de port et utilisé des commandes de débogage. Nous avons créé des images personnalisées à l'aide de fichiers Dockerfile, étudié la persistance des données avec des volumes et orchestré des applications multi-conteneurs avec Docker Compose.
Play with Docker offre un environnement sans risque pour apprendre les bases de Docker sans avoir à l'installer localement. Les compétences que vous avez acquises : rédaction de fichiers Dockerfile, gestion de conteneurs et configuration de réseaux, sont directement applicables à l'utilisation de Docker dans le monde réel.
Maintenant que vous comprenez ces principes fondamentaux, veuillez installer Docker Desktop localement. Bien que PWD soit excellent pour l'apprentissage et les tests rapides, un développement sérieux nécessite la persistance, les performances et l'intégration des outils que seule une installation locale peut offrir. Tout ce que vous avez appris dans PWD s'applique directement à Docker Desktop : les commandes sont identiques et les concepts sont les mêmes.
Continuez à développer cette base. Veuillez tester différentes images de base, explorer les capacités réseau de Docker et vous exercer à rédiger des fichiers Dockerfiles prêts pour la production. Continuez à apprendre, à expérimenter et à construire.
Notre Conteneurisation et virtualisation avec Docker et Kubernetes fournit une excellente base pour travailler avec des conteneurs. Pour continuer à approfondir vos connaissances, je vous recommande également de consulter les ressources suivantes :
FAQ sur l'utilisation de Docker
Dois-je installer Docker pour utiliser Play avec Docker ?
Aucune installation requise. Play with Docker fonctionne entièrement dans votre navigateur web. Il vous suffit de disposer d'un compte Docker Hub gratuit pour vous connecter. PWD fournit un environnement Alpine Linux complet avec Docker préinstallé, accessible depuis n'importe quel appareil disposant d'un accès Internet.
Quelle est la durée des sessions Play with Docker ?
Chaque session Play with Docker dure exactement 2 heures avant que tout ne soit automatiquement supprimé. Vous pouvez créer jusqu'à 5 instances par session. Afin de conserver les images personnalisées au-delà de la session, veuillez les transférer vers Docker Hub avant l'expiration du délai.
Puis-je accéder à mes applications conteneurisées depuis l'extérieur de Play avec Docker ?
Oui ! Lorsque vous exposez un port, Play with Docker génère automatiquement une URL unique pour celui-ci. Veuillez cliquer sur le bouton « OUVRIR LE PORT » pour accéder à vos applications. Vous pouvez partager ces URL avec vos collègues pour une collaboration en temps réel.
Quelle est la différence entre Play with Docker et Docker Desktop ?
Play with Docker est une application gratuite accessible via un navigateur, ne nécessitant aucune installation, ce qui la rend idéale pour l'apprentissage ou les tests rapides. Cependant, les sessions ne durent que deux heures. Docker Desktop s'exécute localement sur votre machine et offre un stockage persistant, de meilleures performances et une intégration IDE, ce qui le rend idéal pour le travail de développement quotidien et les projets à long terme.
Puis-je utiliser Docker Compose dans Play avec Docker ?
Absolument ! Docker Compose est préinstallé dans PWD. Vous pouvez créer des fichiers docker-compose.yml à l'aide de l'éditeur intégré et exécuter des applications multi-conteneurs avec docker-compose up. PWD gère automatiquement la mise en réseau entre les services, ce qui le rend idéal pour tester les architectures de microservices ou pour se familiariser avec l'orchestration de conteneurs.
En tant que fondateur de Martin Data Solutions et Data Scientist freelance, ingénieur ML et AI, j'apporte un portefeuille diversifié en régression, classification, NLP, LLM, RAG, réseaux neuronaux, méthodes d'ensemble et vision par ordinateur.
- A développé avec succès plusieurs projets de ML de bout en bout, y compris le nettoyage des données, l'analyse, la modélisation et le déploiement sur AWS et GCP, en fournissant des solutions impactantes et évolutives.
- Création d'applications web interactives et évolutives à l'aide de Streamlit et Gradio pour divers cas d'utilisation dans l'industrie.
- Enseigne et encadre des étudiants en science des données et en analyse, en favorisant leur développement professionnel par le biais d'approches d'apprentissage personnalisées.
- Conception du contenu des cours pour les applications de génération augmentée par récupération (RAG) adaptées aux exigences de l'entreprise.
- Rédaction de blogs techniques à fort impact sur l'IA et le ML, couvrant des sujets tels que les MLOps, les bases de données vectorielles et les LLM, avec un engagement significatif.
Dans chaque projet que je prends en charge, je m'assure d'appliquer des pratiques actualisées en matière d'ingénierie logicielle et de DevOps, comme le CI/CD, le linting de code, le formatage, la surveillance des modèles, le suivi des expériences et la gestion robuste des erreurs. Je m'engage à fournir des solutions complètes, en transformant les connaissances sur les données en stratégies pratiques qui aident les entreprises à se développer et à tirer le meilleur parti de la science des données, de l'apprentissage automatique et de l'IA.
