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

Premiers pas avec les images Docker pré-construites

Les images sont le composant fondamental de docker. Dans ce guide, nous expliquerons ce que sont les images Docker, comment les créer, comment les gérer et comment les utiliser.

Commençons.

Prérequis

  • Avant de commencer à utiliser les images Docker, vous devez installer Docker sur votre système.
  • Ce guide utilise Ubuntu, mais les étapes doivent être similaires pour les autres distributions.
  • Un compte utilisateur avec des privilèges root.

Que devez-vous savoir ?

Avant de commencer à travailler avec des images docker, il est important que vous sachiez ce qu'elles sont.

Les images Docker sont les composants fondamentaux de Docker. Docker utilise des images pour créer des conteneurs. Les images sont essentiellement des modèles qui contiennent toutes les informations nécessaires pour créer un conteneur, comme le code, les bibliothèques et le runtime.

Un conteneur Docker est une instance d'exécution d'une image. Il contient tout ce que contient l'image, ainsi que toutes les modifications ou tous les ajouts que vous apportez pendant l'exécution du conteneur. Par exemple, si vous installez une nouvelle application sur votre système, la nouvelle application sera installée dans votre conteneur.

Gestion des images avec la CLI

La gestion des images avec Docker CLI est un must pour les administrateurs Docker. Le Docker CLI est un outil puissant qui vous donne un contrôle total sur vos images et vos conteneurs. Dans cette section, vous apprendrez à utiliser la CLI Docker pour gérer vos images.

1. Exécutez la commande ci-dessous pour vous assurer que Docker est en cours d'exécution.

sudo systemctl status docker

2. Si Docker n'est pas en cours d'exécution, démarrez-le avec la commande ci-dessous.

sudo systemctl start docker

3. Ajoutez votre compte d'utilisateur au groupe docker. Déconnectez-vous et reconnectez-vous pour que les modifications prennent effet.

sudo usermod -aG docker $(whoami)

4. Si vous exécutez la commande docker image, vous verrez une liste de toutes les options disponibles pour la commande docker image.

docker image

Comme indiqué ci-dessous, la commande docker image a de nombreuses options, mais certaines des plus couramment utilisées sont :

  • ls  :Répertorier les images sur votre système.
  • tirer  :extrait une image d'un registre.
  • appuyer  :Pousser une image vers un registre.
  • créer  :Créer une nouvelle image à partir d'un Dockerfile.
  • rm  :Supprimer une image de votre système.
  • balise : Taguez une image avec un nom.

Pour commencer, voyons comment répertorier les images sur votre système.

5. Exécutez la commande docker image ls pour répertorier les images sur votre hôte. La commande docker image ls répertorie toutes les images sur votre hôte, y compris les référentiels à partir desquels elles ont été extraites. L'ID, le référentiel, la balise et la taille de l'image.

docker image ls

Supposons que vous souhaitiez supprimer une image de votre hébergeur. Vous pouvez utiliser la commande rm. Vous pouvez utiliser le nom de l'image ou l'ID de l'image pour supprimer une image.

docker image rm <image-name>
docker image rm <image-id>

Si vous utilisez l'ID, assurez-vous que les premiers caractères de l'ID sont uniques aux images de la liste. En d'autres termes, les premières lettres de l'ID ne doivent pas être utilisées par d'autres images.

6. Par exemple, pour supprimer l'image ubuntu:12.04, vous pouvez utiliser l'une des commandes suivantes. Notez que nous ne pouvons utiliser que les premiers caractères de l'ID (5b1) pour supprimer l'image car il n'y a pas d'autres images avec ces premiers caractères.

docker image rm ubuntu:12.04
docker image rm 5b1

L'image ubuntu:12.04 sera supprimée de votre hôte avec chaque calque utilisé pour créer l'image, comme indiqué ci-dessous.

7. Répertoriez les images sur votre système pour vérifier que l'image ubuntu:12.04 n'est plus répertoriée.

docker image ls

Notez que la commande docker image ls et la commande docker images font exactement la même chose. Cependant, la seconde est désormais obsolète car Docker préfère que les développeurs utilisent la commande docker avec ses sous-commandes correctes. Nous avons la même chose avec la commande docker rmi. Cette commande est utilisée pour supprimer une image et tous ses calques exactement comme l'image docker rm. Docker recommande d'utiliser docker rm avec ses sous-commandes correctes.

docker image ls
docker images

Nous avons le même résultat.

Jusqu'à présent, vous avez supprimé une image inutilisée à la fois. Que faire si vous souhaitez supprimer deux images inutilisées ou plus en même temps ?

C'est là que la commande prune est utile. La commande prune peut être utilisée pour supprimer toutes les images inutilisées de votre hôte en une seule fois. Vous pouvez utiliser la commande prune pour supprimer toutes les images pendantes, toutes les images inutilisées ou une combinaison des deux. Les images pendantes sont les images qui n'ont pas au moins un conteneur qui leur est associé.

8. Exécutez la commande docker image prune pour supprimer toutes les images inutilisées/en suspens de votre système.

docker image prune

Comme vous pouvez le voir, la commande prune a supprimé toutes les images inutilisées et leurs calques de votre hôte et vous a permis d'économiser beaucoup d'espace disque dans le processus.

9. Répertoriez les images sur votre hôte pour vérifier qu'elles ont vraiment disparu. Maintenant que vous savez comment répertorier, supprimer et élaguer les images de votre hôte. Ces commandes de base vous aideront à garder votre système propre et organisé.

docker image ls

Inspecter les images Docker

Vous pourriez considérer les images et les conteneurs Docker comme des boîtes noires mystiques. Vous vous demandez quel genre de magie se passe à l'intérieur d'eux. Dans cette section, nous dissipons une partie du mysticisme en examinant ce qu'il y a dans une image Docker et comment vous pouvez utiliser ces informations à votre avantage.

1. Docker offre un moyen d'inspecter le contenu d'une image. La commande docker inspect prend un chemin vers une image et imprime une mine d'informations à son sujet, comme illustré dans l'exemple suivant.

docker inspect ubuntu

Comme indiqué ci-dessous, la sortie de la commande ci-dessus contient de nombreuses informations. Vous voyez toutes les informations ici dans un format appelé tableau JSON.

Les informations du résultat s'affichent comme un magasin clé-valeur. Vous pouvez utiliser un outil Linux comme le tube (|) pour grep la sortie pour un mot-clé spécifique. Ensuite, vous pouvez utiliser la sortie canalisée à toutes les fins que vous souhaitez. Les exemples suivants montrent comment vous pouvez utiliser do this.

2. Exécutez la commande ci-dessous pour enregistrer la sortie de la commande docker inspect dans un fichier appelé image-inspect.txt.

docker image inspect ubuntu > image-inspect.txt

3. Ensuite, utilisez un éditeur de votre choix pour ouvrir le fichier et inspecter son contenu.

sudo nano image-inspect.txt

La sortie de la commande docker inspect contient une multitude d'informations sur une image, comme indiqué ci-dessous. À l'intérieur de l'éditeur, vous pouvez facilement naviguer comme faire défiler l'éditeur vers le haut/bas pour inspecter différentes informations. Vous pouvez modifier les informations si vous le souhaitez.

Vous pouvez également utiliser l'argument --format pour formater la sortie d'une manière spécifique.

4. Par exemple, pour imprimer l'ID de l'image Ubuntu, vous pouvez utiliser la commande suivante.

docker image inspect ubuntu --format='{{.ID}}'

5. Répertoriez l'image pour vérifier l'ID de l'image.

docker image ls

6. Exécutez la commande ci-dessous pour diriger la sortie de la commande docker inspect vers la commande more. Cela vous permettra de parcourir la sortie afin de voir toutes les informations qu'elle contient.

docker image inspect ubuntu | more

Cette fois, vous verrez le nom d'hôte (b32714f341a6 ) dans ContainerConfig section, comme indiqué ci-dessous.

7. Et si vous voulez la valeur du nom d'hôte (b32714f341a6 ) seul? Vous pouvez y parvenir en exécutant la commande ci-dessous.

docker image inspect ubuntu --format='{{.ContainerConfig.Hostname}}'

Comme vous pouvez le voir, vous pouvez utiliser la commande docker inspect avec les outils Linux pour effectuer un filtrage supplémentaire. Comme une gamme. Par exemple, pour répertorier toutes les adresses IP dans la plage 192.168.0.0/16. Et vous pouvez même le combiner avec d'autres outils de script pour faire des choses encore plus cool.

Utilisation des balises Docker 

Au fur et à mesure que vous continuez à travailler avec des images Docker, vous souhaiterez commencer à utiliser des balises. Les balises vous permettent d'identifier et de gérer facilement vos images. Par exemple, vous pouvez créer une balise pour chaque environnement dans lequel une image est utilisée, ou pour chaque client ou client pour lequel une image est utilisée. Cela permet de trouver facilement l'image spécifique dont vous avez besoin et de savoir quelles images ont été utilisées à quelles fins.

La syntaxe pour ajouter un tag à une image est la suivante :

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

Votre balise peut être n'importe quelle chaîne ASCII valide et peut contenir des lettres minuscules et majuscules, des chiffres, des traits de soulignement, des points et des tirets. Il ne peut pas commencer par un point ou un tiret et ne doit pas dépasser 128 caractères. Prenons un exemple.

1. Afin d'ajouter un tag à une image, nous devons d'abord connaître le nom ou l'ID de l'image que nous voulons taguer. Nous pouvons répertorier toutes les images disponibles sur notre système en exécutant la commande suivante :

docker image ls

2. Exécutez maintenant la commande ci-dessous pour ajouter la balise "myubuntu" à l'image.

docker tag ubuntu:latest ubuntu:myubuntu

3. Maintenant, si nous réexécutons la commande docker image ls, nous pouvons voir que notre image a été taguée avec "myubuntu".

Notez que les balises ne sont que des alias. Cela signifie qu'une image peut avoir plusieurs balises, mais elles renvoient toutes à la même image source. Vous pouvez donc utiliser n'importe quelle balise que vous voulez, tant que cela a du sens pour vous. Et c'est une bonne idée d'ajouter des balises lorsque vous créez des images afin de pouvoir facilement les suivre plus tard.

4. Prenons un autre exemple. Supposons que nous voulions créer une image d'Ubuntu avec la balise "original". Nous pouvons le faire en exécutant la commande suivante :

docker tag myubuntu:latest myubuntu:original

La commande ci-dessus créera une image étiquetée avec "original" basée sur l'image étiquetée avec "dernière". Nous avons maintenant deux images myubuntu :une étiquetée avec latest et un taggé avec original , mais ils pointent vers le même ID d'image source (2b4cba85892a ).

Travailler avec les registres Docker

Maintenant que nous avons une compréhension de base de ce que sont les images Docker, examinons comment travailler avec les registres. Docker Hub est le registre public le plus populaire, mais d'autres options sont disponibles.

Docker Hub est un registre public dont l'utilisation est gratuite à des fins personnelles et commerciales. Il propose une grande variété d'images, et vous pouvez également créer vos propres images et les partager avec d'autres. Pour utiliser Docker Hub, il vous suffit de créer un compte puis d'installer le client docker. Vous pouvez ensuite utiliser la commande docker search pour trouver des images et la commande docker pull pour les télécharger.

Jusqu'à présent, nous avons travaillé avec l'image Ubuntu disponible sur Docker Hub, un registre public Docker. Cependant, vous pouvez également créer un registre privé pour stocker vos images.

Déploiement d'un registre Docker privé

Il existe plusieurs raisons pour lesquelles vous pourriez vouloir utiliser un registre privé :

  • Pour stocker des images à usage interne uniquement. Peut-être avez-vous des images contenant des informations sensibles et vous ne voulez pas qu'elles soient accessibles au public. Ou peut-être voulez-vous garder une trace des images qui ont été utilisées dans votre environnement et ne voulez pas que d'autres puissent les télécharger sans votre permission.
  • Pour accélérer les téléchargements d'images dans votre CI/CD de distribution en les mettant en cache localement. Gérer votre propre registre et le stocker vous-même est un excellent moyen de le lier à votre système CI/CD et de l'améliorer.

1. Vérifiez si votre hôte Docker est prêt à créer un registre local.

docker version

2. Exécutez la commande docker run ci-dessous pour avoir un registre local et privé opérationnel. Où :

  • -p 5000:5000 =mapper le port 5000 sur l'hôte docker au port 5000 sur le conteneur
  • --restart=always =garantit que le conteneur est toujours redémarré en cas d'échec
  • --name register =nom de votre registre privé
  • registry :2 =l'image qui sera utilisée pour créer le conteneur de registre
docker run -d -p 5000:5000 --restart=always --name registry registry:2

3. Exécutez la commande ci-dessous pour répertorier tous les conteneurs en cours d'exécution sur votre hôte Docker.

docker ps 

Vous verrez la sortie suivante. Cette sortie indique que le conteneur de registre est opérationnel sur votre hôte Docker. La notation :::5000->5000/tcp est un raccourci qui mappe le port sur l'hôte docker au port sur le conteneur de registre.

Maintenant que notre registre privé est opérationnel, voyons comment y ajouter des images. L'exemple suivant montre comment ajouter l'image Ubuntu au registre. Tout d'abord, vous devrez extraire l'image de Docker Hub vers votre hôte local et lui attribuer une balise spécifique. Vous pousserez ensuite l'image nouvellement taguée vers votre registre privé. Enfin, supprimez l'image Ubuntu de votre hôte local et extrayez l'image de votre registre privé pour la tester.

4. Exécutez la commande ci-dessous pour télécharger l'image Ubuntu avec la balise 20.04 de Docker Hub vers votre hôte local.

 docker image pull ubuntu:20.04

5. Ensuite, exécutez la commande ci-dessous pour marquer l'image Ubuntu téléchargée comme "my-ubuntu". Vous pouvez utiliser n'importe quel tag, mais c'est une bonne idée d'utiliser quelque chose qui a du sens pour votre organisation.

docker tag ubuntu:20.04 localhost:5000/my-ubuntu 

6. Exécutez la commande ci-dessous pour transférer l'image nouvellement taguée vers votre registre privé exécuté sur le port localhost :5000.

docker push localhost:5000/my-ubuntu

7. Exécutez la commande ci-dessous pour supprimer les images Ubuntu mises en cache localement de votre hôte local afin de tester votre registre privé.

docker image remove ubuntu:20.04 && docker image remove localhost:5000/my-ubuntu

8. Une fois que les images Ubuntu mises en cache localement ont été supprimées, vous pouvez exécuter la commande ci-dessous pour extraire l'image de votre registre privé.

docker pull localhost:5000/my-ubuntu

9. Exécutez la commande ci-dessous pour répertorier toutes les images sur votre hôte Docker.

docker image ls

Vous verrez le my-ubuntu image répertoriée comme extraite de votre registre privé, comme indiqué ci-dessous. Cette sortie confirme que l'image a été extraite avec succès de votre registre privé et que votre registre privé fonctionne correctement.

Pousser, extraire et signer des images

Docker offre quelques options de ligne de commande pour pousser, tirer et rechercher des images. Dans cette section, vous apprendrez à utiliser ces commandes pour gérer vos images dans les registres à partir de votre ligne de commande sur votre hôte. Cet exemple utilise le Docker Hub pour illustrer, mais vous pouvez utiliser n'importe quel autre registre.

1. Exécutez la commande docker login pour vous connecter au registre Docker Hub. Indiquez votre nom d'utilisateur et votre mot de passe lorsque vous y êtes invité. Si vous n'avez pas de compte Docker Hub, vous pouvez en créer un gratuitement sur https://hub.docker.com/.

docker login

2. Une fois connecté, vous êtes prêt à envoyer vos images. Supposons que vous souhaitiez transférer la dernière image d'ubuntu vers le Docker Hub. Vous devez également étiqueter l'image avec un nom significatif afin de pouvoir facilement la référencer à l'avenir. Dans cet exemple, vous marquerez l'image comme howtoforge/ubuntu:latest. N'hésitez pas à utiliser le nom de balise de votre choix.

docker tag ubuntu:latest howtoforge/ubuntu:latest
docker push howtoforge/ubuntu:latest

3. Ouvrez votre navigateur Web et accédez au Docker Hub. Vous y verrez votre image. Ce référentiel a été créé en fonction de votre nom d'utilisateur et de la balise que vous avez utilisée. Dans cet exemple, le dépôt est howtoforge/ubuntu . Accédez à l'onglet de balise, vous verrez que votre balise a été appliquée avec succès (dernier ).

4. Exécutez la commande ci-dessous pour supprimer l'image Ubuntu locale afin de tester l'extraction.

docker image rm howtoforge/ubuntu

Répertoriez les images sur votre système pour vérifier que l'image Ubuntu a été supprimée.

docker image ls

5. Exécutez la commande ci-dessous pour télécharger l'image my-ubuntu depuis votre Docker Hub.

docker pull howtoforge/ubuntu

6. Répertoriez à nouveau les images sur votre hôte pour vérifier que l'image Ubuntu a été extraite. Vous devriez voir l'image my-ubuntu sur votre système.

docker image ls

Lorsque vous travaillez avec des images, vous souhaiterez peut-être rechercher des images spécifiques dans les registres Docker. Vous pouvez utiliser la commande docker search pour rechercher des images dans les registres Docker.

7. Exécutez la commande docker search pour voir toutes les options et tous les paramètres disponibles.

man docker search

Vous devriez voir la sortie suivante. Vous pouvez voir une option de filtrage utile comme :

  • étoiles= :filtrez les résultats de la recherche en fonction du nombre d'étoiles de l'image sur Docker Hub. Vous pouvez l'utiliser pour trouver les images les plus populaires.
  • is-automated=(true|false) :filtrez les résultats de la recherche pour inclure ou exclure les builds automatisés. Vous pouvez l'utiliser pour rechercher des images qui sont ou non des versions automatisées.
  • is-official=(true|false) :filtrez les résultats de la recherche pour inclure ou exclure les images officielles. Vous pouvez l'utiliser pour trouver des images officiellement prises en charge par la société derrière l'image. Par exemple, Ubuntu est la société officielle derrière l'image d'Ubuntu. Nginx est la société officielle derrière l'image Nginx. Vous devez toujours utiliser des images officielles dans la mesure du possible, car elles ont été testées par l'entreprise et sont plus susceptibles d'être stables. Lorsque vous rencontrez des problèmes avec une image officielle, vous pouvez obtenir de l'aide de la société qui fournit l'image.

8. Par exemple, exécutez la commande docker search --filter=stars=4 ubuntu pour rechercher l'image ubuntu avec 4 étoiles ou plus sur Docker Hub.

docker search --filter=stars=4 ubuntu

9. Exécutez la commande ci-dessous pour rechercher l'image Ubuntu qui est une image officielle d'Ubuntu.

docker search --filter=is-official=true ubuntu

La sortie doit être une liste de référentiels contenant l'image Ubuntu et indiquant qu'il s'agit d'une image Ubuntu officielle (OK ), comme indiqué ci-dessous.

10. Exécutez la commande ci-dessous pour rechercher l'image Ubuntu qui a au moins 100 étoiles sur Docker Hub et qui est une image Ubuntu officielle.

docker search --filter="stars=100" --filter=is-official=true ubuntu

Les images Docker sont un excellent moyen de stocker le code et la configuration de votre application. Mais en même temps, il est facile d'accumuler beaucoup d'images inutilisées, en particulier si vous testez différentes applications ou essayez différentes configurations. Vous constaterez peut-être que vous n'avez plus besoin de certaines des images de vos registres.

Vous pouvez supprimer une image en accédant au référentiel qui contient l'image et en cliquant sur le bouton de suppression.

11. Par exemple, sur Docker Hub, accédez au référentiel howtoforge/ubuntu. Cliquez sur Paramètres> Supprimer le référentiel . Confirmez que vous souhaitez supprimer le référentiel en saisissant le nom du référentiel. Cliquez sur Supprimer .

Revenez au tableau de bord et vous verrez que le référentiel howtoforge/ubuntu est maintenant supprimé avec l'image ubuntu.

Conclusion

Toutes nos félicitations! Vous êtes maintenant arrivé à la fin de l'article. Vous devriez maintenant avoir une compréhension de base des images Docker et savoir comment les utiliser. Si vous souhaitez en savoir plus sur Docker, nous vous suggérons de lire la documentation officielle de Docker où vous trouverez plus d'informations sur des sujets tels que :

  • Fichiers Docker
  • Mise en réseau
  • Volumes
  • Services
  • Mode Essaim

Docker
  1. Premiers pas avec Zsh

  2. Démarrer avec ls

  3. Premiers pas avec PostgreSQL sous Linux

  4. Comment partager des images Docker avec d'autres

  5. Comment modifier les images Docker

Premiers pas avec cPanel

Premiers pas avec SiteApps

Tutoriel de démarrage avec Azure Docker

Gardez vos images Docker gérables avec Docker Image Prune

Partage d'images Docker sur Docker Hub

Premiers pas avec Buildah pour la gestion des conteneurs Linux