DOCKER - 6. CRÉER UNE IMAGE AVEC UN CONTENEUR
Table des matières:
Une image Docker est le plan directeur des conteneurs Docker qui contient l'application et tout ce dont vous avez besoin pour exécuter l'application. Un conteneur est une instance d'exécution d'une image.
Dans ce didacticiel, nous expliquerons ce qu'est Dockerfile, comment en créer un et comment créer une image Docker avec Dockerfile.
Qu'est-ce que Dockerfile
Un Dockerfile est un fichier texte qui contient toutes les commandes qu'un utilisateur peut exécuter sur la ligne de commande pour créer une image. Il comprend toutes les instructions nécessaires à Docker pour créer l'image.
Les images Docker sont constituées d'une série de couches de système de fichiers représentant des instructions dans le fichier Docker de l'image qui constitue une application logicielle exécutable.
Le fichier Docker prend la forme suivante:
# Comment INSTRUCTION arguments
INSTRUCTION
n'est pas sensible à la casse, mais la convention consiste à utiliser UPPERCASE pour ses noms.
Voici la liste avec une brève description de certaines des instructions Dockerfile les plus utilisées:
- ARG - Cette instruction vous permet de définir des variables qui peuvent être transmises au moment de la construction. Vous pouvez également définir une valeur par défaut. FROM - L'image de base pour créer une nouvelle image. Cette instruction doit être la première instruction sans commentaire dans le Dockerfile. La seule exception à cette règle est lorsque vous souhaitez utiliser une variable dans l'argument
FROM
. Dans ce cas,FROM
peut être précédé d'une ou plusieurs instructionsARG
. LABEL - Utilisé pour ajouter des métadonnées à une image, telles que la description, la version, l'auteur..etc. Vous pouvez spécifier plusieursLABEL
et chaque instructionLABEL
est une paire clé-valeur. RUN - Les commandes spécifiées dans cette instruction seront exécutées pendant le processus de construction. Chaque instructionRUN
crée un nouveau calque au-dessus de l'image actuelle. ADD - Utilisé pour copier des fichiers et des répertoires de la source spécifiée vers la destination spécifiée sur l'image du docker. La source peut être des fichiers ou des répertoires locaux ou une URL. Si la source est une archive tar locale, elle est automatiquement décompressée dans l'image Docker. COPY - Similaire àADD
mais la source ne peut être qu'un fichier ou répertoire local. ENV - Cette instruction vous permet de définir une variable d'environnement. CMD - Utilisé pour spécifier une commande qui sera exécutée lorsque vous exécuterez un conteneur. Vous ne pouvez utiliser qu'une seule instructionCMD
dans votre Dockerfile. ENTRYPOINT - Similaire àCMD
, cette instruction définit la commande qui sera exécutée lors de l'exécution d'un conteneur. WORKDIR - Cette directive définit le répertoire de travail actuel pour les instructionsRUN
,CMD
,ENTRYPOINT
,COPY
etADD
. UTILISATEUR - Définissez le nom d'utilisateur ou l'UID
à utiliser lors de l'exécution des instructionsRUN
,CMD
,ENTRYPOINT
,COPY
etADD
. VOLUME - Vous permet de monter un répertoire de machine hôte sur le conteneur. EXPOSE - Utilisé pour spécifier le port sur lequel le conteneur écoute lors de l'exécution.
Pour exclure des fichiers et des répertoires de l'ajout à l'image, créez un fichier
.dockerignore
dans le répertoire de contexte. La syntaxe du
.dockerignore
est similaire à celle du fichier
.gitignore
de Git.
Pour une référence complète et une explication détaillée des instructions Dockerfile, consultez la page de référence officielle Dockerfile.
Créer un Dockerfile
Le scénario le plus courant lors de la création d'images Docker consiste à extraire une image existante d'un registre (généralement à partir de Docker Hub) et à spécifier les modifications que vous souhaitez apporter à l'image de base. L'image de base la plus utilisée lors de la création d'images Docker est Alpine car elle est petite et optimisée pour être exécutée en RAM.
Dans cet exemple, nous allons créer une image Docker pour le serveur Redis. Nous utiliserons la dernière ubuntu 18.04 comme image de base.
Créez d'abord un répertoire qui contiendra le Dockerfile et tous les fichiers nécessaires:
mkdir ~/redis_docker
Accédez au répertoire et créez le Dockerfile suivant:
cd ~/redis_docker
nano Dockerfile
Dockerfile
FROM ubuntu:18.04 RUN apt-get update && \ apt-get install -y redis-server && \ apt-get clean EXPOSE 6379 CMD
Expliquons la signification de chacune des lignes du Dockerfile:
- À la ligne
1
nous définissons l'image de base. L'instructionRUN
qui commence à la ligne3
mettra à jour l'index apt, installera le paquet «redis-server» et nettoiera le cache apt. Les commandes utilisées dans les instructions sont les mêmes que celles que vous utiliseriez pour installer redis sur le serveur Ubuntu. L'instructionEXPOSE
définit le port sur lequel le serveur redis écoute. Dans la dernière ligne, nous utilisons l'instructionCMD
pour définir la commande par défaut qui sera exécuté lors de l'exécution du conteneur.
Enregistrez le fichier et fermez l'éditeur.
Construire l'image
L'étape suivante consiste à créer l'image. Pour ce faire, exécutez la commande suivante à partir du répertoire où se trouve le Dockerfile:
docker build -t linuxize/redis.
L'option
-t
spécifie le nom de l'image et éventuellement un nom d'utilisateur et une balise au format 'username / imagename: tag'.
La sortie du processus de construction ressemblera à ceci:
Sending build context to Docker daemon 3.584kB Step 1/4: FROM ubuntu:18.04 ---> 7698f282e524 Step 2/4: RUN apt-get update && apt-get install -y gosu redis-server && apt-get clean ---> Running in e80d4dd69263… Removing intermediate container e80d4dd69263 ---> e19fb7653fca Step 3/4: EXPOSE 6379 ---> Running in 8b2a45f457cc Removing intermediate container 8b2a45f457cc ---> 13b92565c201 Step 4/4: CMD ---> Running in a67ec50c7048 Removing intermediate container a67ec50c7048 ---> d8acc14d9b6b Successfully built d8acc14d9b6b Successfully tagged linuxize/redis:latest
Une fois le processus de génération terminé, la nouvelle image sera répertoriée dans la liste des images:
docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE linuxize/redis latest d8acc14d9b6b 4 minutes ago 100MB ubuntu 18.04 7698f282e524 5 days ago 69.9MB
Exécution d'un conteneur
Maintenant que l'image est créée, vous en exécutez un conteneur en exécutant:
docker run -d -p 6379:6379 --name redis linuxize/redis
Les options
-d
indiquent à Docker d'exécuter le conteneur en mode détaché, l'option
-p 6379:6379
publiera le port 6379 sur la machine hôte et l'option
--name redis
spécifie le nom du conteneur. Le dernier argument
linuxize/redis
est le nom de l'image, qui est utilisé pour exécuter le conteneur.
Lorsque le conteneur démarre, utilisez la commande suivante pour répertorier tous les conteneurs en cours d'exécution:
docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6b7d424cd915 linuxize/redis:v0.0.1 "redis-server '--pro…" 5 minutes ago Up 5 minutes 0.0.0.0:6379->6379/tcp redis
Pour vérifier que tout fonctionne comme il se doit, utilisez le
redis-cli
pour vous connecter au conteneur
redis-cli
:
redis-cli ping
Le serveur redis devrait répondre avec
PONG
.
Conclusion
Ce didacticiel ne couvrait que les bases de l'utilisation de Dockerfiles pour créer des images. Pour en savoir plus sur la façon d'écrire des Dockerfiles et les meilleures pratiques recommandées, voir Meilleures pratiques pour écrire des Dockerfiles.
Microsoft profite en vendant des publicités en ligne sur son moteur de recherche à des gangs criminels gérant des sites Web pharmaceutiques offrant des médicaments Selon une nouvelle étude, Microsoft vend des publicités en ligne sur son moteur de recherche à des gangs criminels qui gèrent des sites Web pharmaceutiques offrant des médicaments à des personnes sans ordonnance adéquate.
Environ 89,7% des Selon le rapport, les pharmacies qui paient des publicités sur le dernier moteur de recherche de la société, Bing.com, sont frauduleuses ou se livrent à des activités illégales. KnujOn, une compagnie antispam, et LegitScript, qui offre un service qui vérifie la légitimité de certaines pharmacies en ligne, ont publié le rapport.
Microsoft prend au sérieux les allégations selon lesquelles des partenaires commerciaux se livrent à des pots-de-vin pour obtenir des marchés publics dans trois pays en dehors des États-Unis, le Microsoft a pris mardi au sérieux les accusations selon lesquelles des partenaires commerciaux se seraient livrés à des pots-de-vin pour obtenir des marchés publics dans trois pays en dehors des Etats-Unis, a annoncé mardi le Wall Street Journal. la Securities and Exchange Commission des États-Unis enquê
[Lectures supplémentaires: Votre nouvel ordinateur a besoin de ces 15 programmes gratuits et excellents]
Comment supprimer des conteneurs Docker, des images, des volumes et des réseaux
Ce guide sert de triche pour aider les utilisateurs de Docker à organiser leur système et à libérer de l'espace disque en supprimant les conteneurs, images, volumes et réseaux Docker inutilisés.