Cet article vous apporte des connaissances pertinentes sur la commande dockerFile Cette commande contient des instructions. Chaque instruction crée une couche de fichiers de production d'images. J'espère qu'elle sera utile à tout le monde.
Étude recommandée : "Tutoriel vidéo Docker"
Dockerfile est un fichier de production d'image qui contient des instructions, dont chacune construit un calque.
Construire l'image
1 2 3 |
|
FROM spécifie l'image de base
Spécifiez l'image de base via FROM, donc FROM est une instruction nécessaire dans un Dockerfile et doit être la première instruction.
À PARTIR DE zéro, cette image est un concept virtuel et n'existe pas réellement. Elle représente une image vierge. Les instructions suivantes commenceront à exister en tant que première couche de l'image.
Commande d'exécution RUN
RUN est utilisé pour exécuter des commandes de ligne de commande. Il existe deux formats :
format shell :
1 2 3 |
|
format exec :
1 |
|
Union FS a un nombre maximum de couches, comme AUFS. Le nombre maximum de calques était auparavant de 42, mais il est maintenant de 127. Pour la même fonction, && doit être utilisé pour concaténer les commandes requises afin de simplifier le nombre de calques miroir
COPY Copier le fichier
1 2 |
|
1 2 |
|
AJOUTER Copier fichier (télécharger le fichier ou décompresser le fichier)
1 2 |
|
CMD spécifie la commande de démarrage par défaut du processus principal du conteneur
1 |
|
1 2 3 |
|
Lors de l'exécution de l'image docker run -it, si vous ne spécifiez pas de commande comme /bin/bash , sh -c cat /a sera automatiquement exécuté .txt, sinon la commande de démarrage du processus principal du conteneur sera spécifiée en fonction du CMD
ENTRYPOINT spécifié par l'utilisateur, similaire à CMD
Le format est cohérent avec CMD, les différences
1. Utilisez ENTRYPOINT pour passer les paramètres
Spécifiez ENTRYPOINT dans le Dockerfile [ "curl", "-s", "http://myip.ipip.net" ], lorsque la ligne de commande passe docker exécutez myip -i, le paramètre -i sera passé à la commande ENTRYPOINT, et enfin en entrant dans le conteneur
, le conteneur exécutera curl -s http://myip.ipip.net -i
2. un travail d'initialisation qui n'a rien à voir avec CMD. Quel que soit le CMD du conteneur, quel que soit le CMD, un travail de prétraitement doit être effectué au préalable.
Similaire à ENTRYPOINT ["docker-entrypoint.sh"] Ce script vérifie si l'identité de l'utilisateur est légale, etc.
ENV définit les variables d'environnement
1 2 |
|
Paramètres de construction ARG
1 |
|
ARG L'instruction a un plage valide, si elle est spécifiée avant l'instruction FROM, elle ne peut être utilisée que dans l'instruction FROM.
1 2 3 |
|
Si spécifié après FROM, les variables utilisées dans chaque étape doivent être spécifiées séparément dans chaque étape
1 2 3 4 5 6 |
|
VOLUME volume anonyme
1 2 |
|
Afin d'éviter que les utilisateurs n'oublient de monter le répertoire dans lequel les fichiers dynamiques sont enregistrés pendant l'exécution En tant que volume, dans le Dockerfile, vous pouvez spécifier à l'avance certains répertoires à monter en tant que volumes anonymes, de sorte que si l'utilisateur ne spécifie pas le montage au moment de l'exécution, l'application peut s'exécuter normalement sans écrire une grande quantité de données dans le stockage du conteneur. layer
Ici, le répertoire /data sera automatiquement monté en tant que volume anonyme lorsque le conteneur est en cours d'exécution. Toute information écrite dans /data ne sera pas enregistrée dans la couche de stockage du conteneur, garantissant ainsi l'apatridie de la couche de stockage du conteneur.
EXPOSE Exposed Port
1 |
|
La commande EXPOSE déclare le port sur lequel le conteneur fournit des services lors de son exécution. EXPOSE déclare uniquement le port que le conteneur a l'intention d'utiliser et n'effectue pas automatiquement le mappage de port sur l'hôte.
L'écriture d'une telle déclaration dans le Dockerfile présente deux avantages. L'un est d'aider les utilisateurs d'images à comprendre le port de garde du service d'image pour faciliter le mappage de configuration ; , lorsque Docker exécute -P, le port EXPOSE sera automatiquement et aléatoirement mappé.
Faites la distinction entre EXPOSE et l'utilisation de -p
-p mappe le port hôte et le port du conteneur. En d'autres termes, il expose le service portuaire correspondant du conteneur au monde extérieur.
WORKDIR spécifie le répertoire de travail si le répertoire n'existe pas, WORKDIR créera le répertoire1 |
|
1 2 3 |
|
Exemple 2 :
1 2 3 4 5 6 7 |
|
1 |
|
1 2 3 4 5 6 7 8 9 10 |
|
1 2 |
|
1 2 3 |
|
Lorsque l'instruction HEALTHCHECK est spécifiée dans une image, utilisez-la pour démarrer le conteneur. démarre et la vérification de l'instruction HEALTHCHECK réussit. Ensuite, elle devient saine si elle échoue un certain nombre de fois de suite.
HEALTHCHECK ne peut apparaître qu'une seule fois. Si plusieurs sont écrits, seul le dernier prendra effet
.CMD 命令的返回值决定了该次健康检查的成功与否:0:成功;1:失败
ONBUILD 指定某些命令只有当以当前镜像为基础镜像,去构建下一级镜像的时候才会被执行
1 |
|
1 2 3 4 5 6 7 8 9 10 11 |
|
LABEL 为镜像添加元数据
1 |
|
1 2 3 |
|
SHELL 指定执行shell命令的参数
1 |
|
1 2 3 |
|
推荐学习:《docker视频教程》
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!