GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Comment installer et utiliser Docker sur Ubuntu (dans le monde réel)

Si vous cherchez des informations sur l'installation de Docker sur Ubuntu, vous êtes au bon endroit. Non seulement cela, mais en prime, ce didacticiel vous montrera également comment exécuter les commandes Docker de base pour exécuter et gérer des conteneurs.

En utilisant les fonctionnalités pratiques de Visual Studio (VS) Code, vous apprendrez également à renforcer vos compétences SSH. Commençons !

Connexe : Un gars Windows dans un monde Linux :VS Code et SSH distant

Prérequis

Si vous souhaitez suivre étape par étape, dans ce didacticiel, assurez-vous d'avoir les éléments suivants :

  1. Une nouvelle installation d'Ubuntu Server LTS avec SSH activé (Ce guide utilisera Ubuntu Server LTS 20.04.1)
  2. Une machine Windows avec VSCode installé (ce guide utilisera Visual Studio Code 1.52.1)
  3. L'extension SSH officielle VSCode installée et connecté à votre installation Ubuntu Server LTS

Installer Docker sur Ubuntu

Commençons par installer d'abord Docker sur Ubuntu. À ce stade, le didacticiel suppose que vous êtes sur votre ordinateur Windows local avec VS Code ouvert connecté à votre serveur Ubuntu via SSH. Découvrez comment configurer cet environnement pratique dans le dernier article sur l'utilisation de VS Code et SSH .

Dans l'exemple ci-dessous, VSCode est connecté à distance à Ubuntu avec le home dossier (dans ce cas, /home/homelab ) ouvert en tant qu'espace de travail :

Le processus réel d'installation de Docker dans Ubuntu Server est à deux commandes. Ubuntu rend Docker disponible en tant qu'option d'installation dans le gestionnaire de packages par défaut fourni avec Ubuntu, connu sous le nom de apt .

Dans la fenêtre du terminal SSH de VS Code, exécutez les deux commandes suivantes pour installer Docker :

sudo apt update -y
sudo apt install docker.io -y

Lors de l'installation d'Ubuntu Server, on vous a peut-être proposé l'option d'installer Docker en un clin d'œil. Si vous l'avez fait, supprimez d'abord le package snap en exécutant sudo snap remove docker

Vous pouvez regarder l'installation de docker dans l'animation ci-dessous :

Ubuntu est assez sympa pour activer et configurer automatiquement le service pour qu'il démarre au démarrage pour vous, vous êtes donc prêt à commencer à utiliser Docker !

Création et exécution d'un conteneur Docker sur Ubuntu

Maintenant que Docker est installé, que pouvez-vous en faire ? Commençons par créer un conteneur Docker. Ce didacticiel configurera un serveur Web statique comme bon exemple de conteneur Docker. Dans cette section, vous allez :

  • Configurer un nouveau conteneur à partir du Docker Hub Référentiel d'images pour exécuter un service HTTP
  • Utilisez Port Mapping pour mapper le port HTTP dans le conteneur à votre hôte Ubuntu
  • Configurez des montages de liaison pour mapper les données importantes du conteneur vers votre hôte Ubuntu
  • Configurez la persistance via les redémarrages pour votre conteneur

Si l'une des étapes ci-dessus semble déroutante, ne vous inquiétez pas, nous couvrirons chaque étape, une à la fois, pour vous aider à comprendre le processus.

Téléchargement de l'image Docker

La première question que vous devez vous poser est :d'où viendra ce conteneur ? Jetons un coup d'œil au Docker Hub.

Une grande partie de Docker comprend les dépôts d'images . Plutôt que d'être distribués comme des packages, les services de Docker sont distribués sous forme d'images Docker.

Une image Docker est un instantané du logiciel que l'éditeur souhaite distribuer et de l'ensemble du système de classement ! Cela revient à créer une image .wim de Windows.

Cette capture du système de fichiers rend Docker si populaire :le logiciel est capturé avec l'ensemble de l'environnement d'exploitation. Cela élimine les problèmes introduits par les différences entre les environnements de serveur.

L'un des référentiels les plus populaires (et le référentiel par défaut) pour les images est le Docker Hub également connu sous le nom de référentiel Docker officiel. Le référentiel d'images est l'endroit où vous pouvez télécharger des milliers d'images Docker précréées à exécuter en tant que conteneurs.

Étant donné que ce didacticiel configure un serveur Web statique, vous devez télécharger une image de serveur Web. Les deux serveurs Web les plus populaires sont Apache httpd et Nginx mais pour changer un peu les choses et éventuellement vous présenter un nouveau serveur Web, utilisons-en un appelé Caddy .

Caddy est un serveur Web connu pour sa simplicité. De nombreuses configurations de serveur valides peuvent être déployées à l'aide d'une seule ligne dans un fichier. La simplicité est bonne et constitue également un bon exemple de base.

  1. Tout d'abord, vous devez trouver l'image Docker. Sur votre ordinateur Windows, accédez à https://hub.docker.com .
  2. Effectuer une recherche pour caddie dans le coin supérieur gauche de la page. Vous devriez voir une page semblable à la suivante :

Un avantage (et un inconvénient) de Docker Hub est que n'importe qui, même vous, peut créer et télécharger des images Docker sur le site.

Vous devez vous assurer que l'image que vous choisissez provient d'une source fiable. N'importe qui peut placer des logiciels malveillants dans une image s'il le souhaite et télécharger sa version sur Docker Hub.

3. Notez le nom de l'image. Dans la capture d'écran ci-dessus, le nom est caddie exactement. Vous aurez besoin de ce nom pour spécifier le nom de l'image dans les étapes suivantes.

Exécuter un conteneur avec Docker sur Ubuntu

Une fois que vous connaissez le nom de l'image que vous souhaitez télécharger, il est temps de la télécharger et de créer un conteneur à partir de celle-ci.

Le démarrage d'un conteneur à partir d'une image nécessite une seule commande. Dans votre terminal SSH connecté à votre serveur Ubuntu, exécutez le docker run suivant commande.

La commande ci-dessous recherche le caddie image sur la machine locale. S'il n'existe pas, il télécharge l'image depuis Docker Hub, crée un conteneur et le démarre. La commande ci-dessous utilise le -p pour mapper le port d'écoute 80 du serveur Ubuntu sur le port 80 du conteneur. Cette fonctionnalité est appelée mappage de port.

sudo docker run -p 80:80 caddy

La plupart des images Docker Hub suivent une convention de dénomination de /. Cependant, les images marquées comme "officielles" par Docker n'ont pas de devant elles (comme caddy ci-dessus).

L'exécution des sorties de commande ci-dessus comme suit, les informations de journal de caddy étant affichées directement dans le terminal :

Vous remarquerez peut-être que presque toutes les commandes docker sont précédées de sudo , pour forcer l'exécution des commandes en tant qu'administrateur. Par défaut, le service docker s'exécute en tant que root , et toutes les modifications que vous apportez aux conteneurs ou aux images doivent être effectuées en tant qu'administrateur.

Et… vous êtes opérationnel ! C'est tout ce qu'on peut en dire. N'êtes-vous pas content d'avoir installé Docker sur Ubuntu ?

Accédez maintenant à http:// sur votre ordinateur Windows et vous devriez voir une page de destination pour Caddy. Vous pouvez voir cela ci-dessous (l'IP de ce guide est remplacé par http://homelab-docker ):

Le caddie conteneur est en cours d'exécution, mais vous avez peut-être remarqué un problème. Exécuter ce docker commande prend le relais de votre ligne de commande. Vous ne pouvez plus exécuter de commandes et si la session se termine, le conteneur en cours d'exécution s'arrête. Résolvons ce problème en exécutant le conteneur en arrière-plan (également appelé détachement le conteneur).

Exécuter des conteneurs Docker en arrière-plan

Vous avez maintenant un conteneur en cours d'exécution, mais votre ligne de commande est bloquée. Vous ne pouvez rien faire d'autre. Vous avez besoin d'une meilleure façon de démarrer un conteneur en l'exécutant en arrière-plan comme un service. Pour ce faire :

  1. Arrêtez le conteneur actuel en appuyant sur control+c dans la ligne de commande. Cela devrait vous rendre votre ligne de commande.
  2. Maintenant, relancez la même commande que la précédente uniquement avec le -d paramètre cette fois comme indiqué ci-dessous. Vous verrez que Docker renverra un ID de conteneur et vous renverra la ligne de commande.
sudo docker run -d -p 80:80 caddy

Gestion des conteneurs d'arrière-plan avec les commandes Docker

Une fois que vous avez un ou plusieurs Dockers en arrière-plan en cours d'exécution, vous devrez les gérer d'une manière ou d'une autre. Docker vous fournit quelques commandes différentes pour le faire en utilisant docker container commandes.

  • sudo docker container list -a  :répertorie tous les conteneurs (en cours d'exécution et arrêtés) et leur état
  • sudo docker container stop <name> :stopper un conteneur docker par son nom (ou par son ID)
  • sudo docker container start <name> :démarrer un conteneur docker par leur nom (ou par leur ID)
  • sudo docker container prune :détruire et supprimer tous les conteneurs arrêtés

Vous pouvez voir toutes les commandes ci-dessus utilisées en contexte dans la capture d'écran ci-dessous :

Il existe de nombreuses autres commandes de conteneur Docker pour afficher, modifier, inspecter ou même accéder à distance aux conteneurs de votre serveur. Vous pouvez tous les voir en exécutant sudo docker container --help .

Même si vous avez maintenant déployé un serveur Web dans un conteneur exécuté en arrière-plan, vous n'avez toujours aucun moyen d'héberger votre contenu personnalisé. Tel quel, Caddy ne sert que la page Web par défaut.

Voyons maintenant comment vous pouvez utiliser les images Docker avec un concept appelé lier les montages pour déployer des conteneurs avec des données significatives.

Stocker des données de conteneur avec des montages liés

Docker travaille sur le concept d'images (et les conteneurs qu'elles génèrent) comme étant jetables ou transitoires . S'il y a une mise à jour du logiciel Caddy, vous ne mettez pas à jour le service, vous jetez tout le bébé avec la baignoire et utilisez une image complètement nouvelle à partir de zéro.

Les avantages d'éliminer et de recréer des conteneurs comme celui-ci sont importants. Les instabilités dans les logiciels sont introduites au fil du temps en mettant continuellement à jour un logiciel (potentiellement) vieux de plusieurs années. En utilisant une nouvelle image à chaque fois, Docker vous fournit une base stable, fiable et (vraisemblablement) testée à chaque mise à jour.

Ce concept équivaut à utiliser une nouvelle installation de Windows chaque fois que vous mettez à jour votre logiciel d'application Windows. Pas une idée amusante sur Windows, mais extrêmement applicable dans Docker.

La méthodologie jetable a cependant un problème évident. Vous ne voulez pas que des données essentielles soient rejetées lorsque votre service actuel est détruit. Docker résout ce problème en utilisant un concept appelé bind mounts .

Voyons maintenant comment créer un montage de liaison pour un conteneur.

Création de la structure des dossiers et nettoyage

Avant de pouvoir utiliser des montages liés, vous devez créer un emplacement pour stocker ces données. Ce didacticiel créera un dossier dans votre répertoire personnel. Pour le faire dans VS Code tout en restant connecté à votre serveur Ubuntu :

  1. Cliquez avec le bouton droit dans une zone vide de l'Explorateur de VS Code panneau et choisissez nouveau dossier.

2. Nommez le nouveau dossier containers/caddy/files.

Les noms de dossier dépendent de vous tant qu'ils sont définis correctement dans la prochaine commande docker. En utilisant une barre oblique, VS Code interprète cela comme la création de trois dossiers. Les fichiers dossier est un sous-répertoire de caddie , et caddie est un sous-répertoire de conteneurs. Vous n'êtes pas obligé d'utiliser cette structure de dossiers, mais la structure a plus de sens lorsque vous avez plusieurs conteneurs sur le même serveur.

Si cela n'a pas été fait précédemment, arrêtez et supprimez tous les conteneurs que vous avez créés précédemment avec ce qui suit :

# stop and remove ALL currently running containers.
# The $(sudo docker ps -q) dynamically grabs all running container IDs
sudo docker container stop $(sudo docker ps -q)
sudo docker container prune

Vous pouvez voir cette commande dans la capture d'écran ci-dessous :

Déploiement d'un conteneur Caddy avec Bind Mounts

Vous avez maintenant la structure de dossiers construite sur le serveur Ubuntu. Il est temps de créer un conteneur Caddy avec des supports de liaison.

  1. Avant d'aller trop loin, déterminez d'abord où le conteneur avec lequel vous travaillez stocke des données persistantes. Cet emplacement sera différent selon qui a créé l'image Docker et à quoi elle sert.

Votre meilleure option pour savoir où les données persistantes sont stockées est de consulter la documentation du Docker Hub pour l'image en question. Pour Caddy, vous pouvez trouver la documentation ici :

2. Démarrez le conteneur à l'aide de la commande ci-dessous. le -v ~/containers/caddy/files:/usr/share/caddy le paramètre mappe le chemin avant les deux-points (~/containers/caddy/files ) dans le dossier à l'intérieur du conteneur (/usr/share/caddy ). Cela fonctionne de manière extrêmement similaire à la commande de mappage de port :sauf que vous mappez un dossier au lieu d'un port. Ce type de commande s'appelle un Bind Mount .

# bind a folder on the host (the path before the colon) to
# /usr/share/caddy inside the container
sudo docker run -d -p 80:80 -v ~/containers/caddy/files:/usr/share/caddy caddy

le tilde (~ ) dans le code ci-dessus fait référence au dossier de départ. Pour cet article, cela équivaut à /home/homelab .

3. Ouvrez un navigateur et revenez à l'adresse http de votre serveur. Vous remarquerez que le serveur sert maintenant un 404 page. Ceci est normal car vous n'avez actuellement pas de index.html fichier dans ~/containers/caddy/files .

4. Créez un index.html fichier dans ~/containers/caddy/files sur le serveur Ubuntu dans la fenêtre VS Code Explorer qui ressemble à ceci :

<body><h2>hello world!</h2></body>

5. Accédez à l'adresse HTTP de votre serveur et confirmez que le conteneur sert maintenant votre nouveau index.html page.

Vous pouvez voir tout ce qui précède dans l'animation suivante :

Contrairement aux commandes de gestion du docker, les fichiers que vous créez (comme index.html ) ne nécessitent pas de droits d'administration. C'est parce que vous possédez le contenu que le serveur de caddie sert, car il se trouve dans votre dossier personnel.

Validation du montage de liaison

Excellent! Non seulement vous utilisez un conteneur Docker complètement frais, mais ce conteneur diffuse du contenu enregistré localement dans votre dossier personnel ! Vous pouvez le prouver en exécutant ce qui suit :

  1. Arrêtez et supprimez le conteneur en cours d'exécution. Cette étape supprime complètement tout, y compris ce fichier index.html si vous n'utilisiez pas de montages liés.
sudo docker container stop $(sudo docker ps -q)
sudo docker container prune

2. Créez un tout nouveau conteneur.

sudo docker run -d -p 80:80 -v ~/containers/caddy/files:/usr/share/caddy caddy

3. Vérifiez que le nouveau conteneur diffuse toujours le fichier index.html sur http://<your server> adresse.

Création de conteneurs Docker persistants

Un conteneur n'est pas très utile s'il s'arrête au redémarrage du serveur. Par défaut, c'est ce qui va se passer si vous ne le faites pas. Pour éviter cela, générons à nouveau un nouveau conteneur caddy, mais cette fois-ci une fois qu'il redémarre lorsque l'hôte Docker, Ubuntu dans ce cas, redémarre.

  1. Arrêtez et supprimez tous les conteneurs en cours d'exécution.
# stop and remove ALL currently running containers
sudo docker container stop $(sudo docker ps -q)
sudo docker container prune

2. Redémarrez le conteneur caddy avec le --restart always , pour définir ce nouveau conteneur pour qu'il démarre avec l'hôte au redémarrage. Avec le --restart always drapeau en place, votre conteneur se comporte désormais comme un véritable service :il démarre automatiquement au démarrage.

sudo docker run -d -p 80:80 -v ~/containers/caddy/files:/usr/share/caddy --restart always caddy

3. Redémarrez le serveur.

4. Vérifiez maintenant que le nouveau conteneur apparaît et sert toujours le fichier index.html sur http://<your server> adresse.

Vous pouvez voir les commandes suivantes appliquées ci-dessous :

Passer à autre chose

À ce stade, vous devez disposer d'un environnement Docker fonctionnel et d'une compréhension de base des images et des conteneurs. Vous pouvez extraire, démarrer, arrêter et effectuer une gestion de base de vos conteneurs. Vous avez également créé avec succès un conteneur de services Web en cours d'exécution à l'aide de montages de liaison et de mappage de port.

Il y a encore beaucoup à couvrir concernant Docker :restez à l'écoute de cet espace, car le prochain article traitera de la gestion avancée des dockers à l'aide de Docker Compose.


Docker
  1. Comment installer et utiliser Docker sur Ubuntu 20.04

  2. Comment installer et utiliser Wine sur Ubuntu 20.04

  3. Comment installer et utiliser Docker dans Ubuntu 20.04

  4. Comment installer et utiliser Docker Compose sur CentOS

  5. Comment installer Docker et exécuter des conteneurs Docker dans Ubuntu

Comment installer et utiliser R sur Ubuntu

Comment installer et utiliser la commande Exa sur Ubuntu 20.04

Comment installer et utiliser Docker Compose sur Ubuntu 20.04

Comment installer et utiliser Docker Compose sur Ubuntu 22.04

Comment installer et utiliser Docker sur Ubuntu 22.04

Comment installer et utiliser Docker sur Ubuntu 20.04