Dockerfile est un simple fichier texte qui contient toutes les commandes que l'utilisateur peut appeler sur la ligne de commande pour assembler ou créer une image. Avec l'aide de docker build, vous pouvez facilement automatiser la build qui exécute plusieurs commandes définies successivement dans le dockerfile.
Par exemple, vous souhaitez télécharger l'image docker depuis le hub docker pour vos besoins de développement spécifiques. Ensuite, vous souhaitez mettre à jour l'image, installer des packages pour votre processus de développement. Dans ce cas, vous pouvez créer un fichier docker, inclure tous les paramètres pour vos besoins spécifiques et créer votre image personnalisée. Après avoir créé un fichier docker, vous pouvez l'utiliser encore et encore pour créer la même image sans installer manuellement tous les packages requis pour votre processus de développement.
Dockerfile de base
Avant de travailler avec dockerfile s'il est important de savoir comment créer un dockerfile. Dockerfile inclut des mots-clés spécifiques qui peuvent être utilisés pour créer une image spécifique. Une brève explication de tous les mots-clés utilisés dans un fichier docker est répertorié ci-dessous :
- DE: Il est utilisé pour définir l'image de base, sur laquelle nous allons construire.
- AJOUTER: Il est utilisé pour ajouter des fichiers au conteneur en cours de construction. En termes simples, RUN est utilisé pour exécuter des commandes et valide le résultat
- COURS: Il est utilisé pour ajouter des couches à l'image de base, en installant des composants.
- CMD: Il est utilisé pour exécuter des commandes au début du conteneur. Ces commandes ne s'exécutent que lorsqu'aucun argument n'est spécifié lors de l'exécution du conteneur.
- POINT D'ACCÈS: Il est utilisé pour exécuter des commandes pendant le processus d'initialisation du conteneur. Vous devez utiliser un ENTRYPOINT dans votre dockefile si vous souhaitez démarrer un conteneur automatiquement après la création d'une image.
- ENV: Il est utilisé pour définir les variables d'environnement dans l'exécution du conteneur.
- EXPOSER: Il est utilisé pour spécifier le port d'écoute pour activer la mise en réseau au moment de l'exécution.
- MAINTIEN: Il est utilisé pour spécifier le nom et l'identifiant email du créateur de l'image.
- UTILISATEUR: Il est utilisé pour spécifier le nom d'utilisateur utilisé pour exécuter le conteneur.
- LE VOLUME: Il est utilisé pour autoriser l'accès du conteneur au répertoire sur l'hôte Docker.
- WORKDIR: Il est utilisé pour spécifier le chemin de la commande à exécuter au moment de l'exécution.
- ÉTIQUETER: Il est utilisé pour ajouter des étiquettes à l'image du docker.
Création du fichier Docker
Dans cette section, nous allons créer un fichier docker pour créer une image de serveur LAMP à partir de l'image de base d'Ubuntu.
Tout d'abord, vous devrez créer un répertoire pour stocker le fichier docker. Vous pouvez le créer avec la commande suivante :
LAMPE mkdirEnsuite, créez un répertoire nommé Dockerfile dans le répertoire :
nano LAMP/DockerfileAjoutez les lignes suivantes :
DE Ubuntu:dernierMAINTENANT Hitesh Jethva
ENV DEBIAN_FRONTEND=non interactif
RUN apt-get update -y && apt-get install apache2 mariadb-server
libapache2-mod-php php php-cli php-common php-mysql php-json php-curl -y
CMD ["apachectl","-D","PREMIER PLAN"]
EXPOSE 8080
Enregistrez et fermez le fichier lorsque vous avez terminé.
Construire une image avec Dockerfile
Après avoir créé le Dockerfile, vous pouvez facilement créer une image LAMP personnalisée à l'aide du Dockerfile.
Tout d'abord, remplacez le répertoire par LAMP et exécutez la commande suivante pour créer l'image à partir de ce fichier :
LAMPE CDdocker build -t "lampe: Dockerfile".
La commande ci-dessus commencera à télécharger la dernière image d'Ubuntu à partir du Docker Hub et à installer les packages nécessaires spécifiés dans le Dockerfile. Une fois que l'image a été créée avec succès, vous devriez voir la sortie suivante :
Envoi du contexte de construction au démon Docker 2.048 KoÉtape 1/6 : DEPUIS ubuntu:latest
dernier : Extraire de la bibliothèque/ubuntu
54ee1f796a1e : Tirez terminé
f7bfea53ad12 : extraction terminée
46d371e02073 : Tirez terminé
b66c17bbf772 : extraction terminée
Résumé : sha256:31dfb10d52ce76c5ca0aa19d10b3e6424b830729e32a89a7c6eee2cda2be67a5
Statut : Image plus récente téléchargée pour ubuntu : la dernière
---> 4e2eef94cd6b
Étape 2/6 : MAINTENANT Hitesh Jethva
---> Courir au 047977af2c2a
Retrait du conteneur intermédiaire 047977af2c2a
---> 1331df625c4c
Etape 3/6 : ENV DEBIAN_FRONTEND=non interactif
---> Courir en 3597152c7a1b
Retrait du conteneur intermédiaire 3597152c7a1b
---> 86c82c95e75d
Étape 4/6 : RUN apt-get update -y && apt-get install apache2 mariadb-server
libapache2-mod-php php php-cli php-common php-mysql php-json php-curl -y
Retrait du conteneur intermédiaire 322532299fd9
---> f6897a9554f7
Etape 5/6 : CMD ["apachectl","-D","FOREGROUND"]
---> Courir en 669635bc8bcb
Retrait du conteneur intermédiaire 669635bc8bcb
---> e8400eb2e677
Etape 6/6 : EXPOSE 8080
---> Courir en 937ae2b2d305
Retrait du conteneur intermédiaire 937ae2b2d305
---> 2123a857361d
Construit avec succès 2123a857361d
Lampe balisée avec succès : Dockerfile
Vous pouvez maintenant lister votre nouvelle image en exécutant la commande suivante :
images dockerVous devriez voir la sortie suivante :
TAILLE CRÉÉE D'ID D'IMAGE D'ÉTIQUETTE DE RÉFÉRENCElampe Dockerfile 2123a857361d il y a 44 secondes 520MB
Ubuntu dernier 4e2eef94cd6b il y a 8 jours 73.9 Mo
Maintenant, vous avez une image de serveur LAMP personnalisée dans votre main. Vous pouvez également voir l'historique de chaque commande avec la commande suivante :
lampe d'historique docker: DockerfileVous devriez voir la sortie suivante :
IMAGE CRÉÉE CRÉÉE PAR TAILLE COMMENTAIRE2123a857361d il y a 16 minutes /bin/sh -c #(nop) EXPOSE 8080 0B
e8400eb2e677 il y a 16 minutes /bin/sh -c #(nop) CMD ["apachectl" "-D" "FO… 0B
f6897a9554f7 il y a 16 minutes /bin/sh -c apt-get update -y && apt-get inst… 446MB
86c82c95e75d il y a 17 minutes /bin/sh -c #(nop) ENV DEBIAN_FRONTEND=nonin… 0B
1331df625c4c il y a 17 minutes /bin/sh -c #(nop) MAINTAINER Hitesh Jethva 0B
4e2eef94cd6b il y a 8 jours /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
Création d'un conteneur à partir d'une image LAMP
Maintenant, vous pouvez exécuter un conteneur à partir de votre image à l'aide de la commande suivante :
docker run -dit lampe: DockerfileUne fois le conteneur démarré, vous devriez voir la sortie suivante :
0d2beb7dba01bb763768b116f734ae68286cee00d2ae923b2b7241c39ad54208Vous pouvez vérifier le conteneur en cours d'exécution à l'aide de la commande suivante :
docker psVous devriez obtenir la sortie suivante :
COMMANDE D'IMAGE D'ID DE CONTENEUR ÉTAT CRÉÉ NOMS DE PORTSlampe c14794784eb2:Dockerfile "apachectl -D FOREGR… " il y a 2 minutes Jusqu'à 2 minutes 0.0.0.0:8080->8080/tcp quirky_ramanujan
Conclusion
Dans ce guide, vous avez appris ce qu'est Dockerfile et comment créer une image docker avec Dockerfile. Ceci est très utile pour créer vos images personnalisées au lieu de valider des modifications sur une image extraite.