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

Une brève introduction à Dockerfile

Dans ce bref guide, permettez-moi de vous donner une brève introduction à Dockerfile et vous apprendre à l'utiliser pour automatiser le processus de création d'images Docker personnalisées. Dockerfile n'est rien d'autre qu'un simple fichier texte avec des instructions pour créer une image docker. Il contient toutes les commandes qu'un utilisateur peut appeler sur la ligne de commande pour créer une image. Nous pouvons utiliser le dockerfile pour créer nos propres images personnalisées. Nous pouvons ensuite partager ces images Docker personnalisées via Docker Hub . Pour ceux qui se demandent, Docker Hub est un service de référentiel hébergé fourni par Docker pour rechercher et partager des images de conteneurs avec votre équipe et bien sûr avec n'importe qui dans le monde.

Imaginez ce scénario. Plus tôt si nous voulons utiliser Jenkins , alors nous devons installer le Jenkins avec beaucoup d'étapes impliquées. Grâce à Dockerhub, nous pouvons désormais télécharger et exécuter l'image de conteneur prédéfinie de Jenkins en quelques minutes.

Image de conteneur Jenkins dans dockerhub

Pour extraire l'image Jenkins de DockerHub, exécutez :

# docker pull Jenkins

Une fois que nous avons extrait les images du menu fixe, nous pouvons l'utiliser en exécutant l'image à l'aide de la commande :

# docker run -it -d -p 8080:8080 jenkins

C'est aussi simple que ça !

Pour en savoir plus sur l'utilisation de Docker, consultez le guide suivant.

  • Premiers pas avec Docker

Il existe plus de 100 000 images de conteneurs provenant de fournisseurs de logiciels, de projets open source et de la communauté disponibles dans Dockerhub. Vous pouvez rechercher et télécharger n'importe quelle image de conteneur de votre choix depuis Dockerhub et commencer à l'utiliser immédiatement, comme indiqué ci-dessus.

Comprendre le format Dockerfile

Docker peut créer des images automatiquement en lisant les instructions à partir d'un Dockerfile.

Un Dockerfile typique contient les instructions suivantes :

1. DE - Il définira l'image de base du conteneur.

Exemple :

FROM ubuntu:18.04

Il définira l'image de base du conteneur comme Ubuntu. Si la balise 18.04 n'est pas spécifiée, elle prendra une balise comme "la plus récente".

2. ÉTIQUETTE - Il s'agit d'une paire clé-valeur utilisée pour spécifier les informations de métadonnées de l'image.

Exemple :

LABEL ENV=”DEVELOPMENT”

3. EXÉCUTER - Il est utilisé pour exécuter la commande sur l'image de base et cela créera un nouveau calque.

Exemple :

RUN apt-get update
RUN apt-get install tomcat

4. CMD - Il est utilisé pour définir une commande à exécuter en premier lorsque le conteneur démarre.

Exemple :

CMD [“java”, “-jar”, “app.jar”]

5. EXPOSER - Il exposera le port pour accéder au conteneur. Le conteneur écoutera sur ce port réseau. Nous pouvons accéder
la sortie à l'aide de ce port.

Exemple :

EXPOSE 8080

6. MAINTENEUR - Il donnera le détail de l'auteur qui a créé cette image Docker.

Exemple :

MAINTAINER [email protected]

7. ENV - Il est utilisé pour définir des variables d'environnement dans la paire clé-valeur. Ces variables sont définies lors de la création de l'image
et sont disponibles après la création du conteneur.

Exemple :

ENV DB_NAME=”MySQL”
ENV DB_VERSION=”8.0”

8. COPIER - Il est utilisé pour copier des fichiers locaux dans le conteneur.

Exemple :

COPY /target/devops.jar devops.jar

9. AJOUTER - Cela fonctionne de la même manière que la copie mais avec quelques fonctionnalités supplémentaires comme nous pouvons extraire le tar local et ajouter une URL distante.

Exemple :

ADD devops.tar.xz / .
ADD http://example.com/abc.git /usr/local/devops/

10. POINT D'ENTRÉE - Il est utilisé pour définir la commande principale de l'image. Cela fonctionne de la même manière que l'instruction CMD. Le
la seule différence entre CMD et ENTRYPOINT est que les instructions ne sont pas écrasées dans ENTRYPOINT.

Exemple :

ENTRYPOINT [“java”, “-jar”, “app.jar”]

11. VOLUME - Il créera un point de montage avec le nom spécifié.

Exemple :

VOLUME /app/devops

12. UTILISATEUR - Il définira le nom d'utilisateur et le groupe d'utilisateurs à utiliser lors de l'exécution de l'image.

Exemple :

USER dhruv
USER admin

13. REPERTOIRE - Il définira le répertoire de travail. Il créera le répertoire s'il n'est pas présent.

Exemple :

WORKDIR /var/lib/

Voici un exemple de Dockerfile pour votre référence.

FROM ubuntu:latest
MAINTAINER Dhruv Tiwari "[email protected]"
RUN apt-get install -y software-properties-common python
RUN add-apt-repository ppa:chris-lea/node.js
RUN echo "deb http://us.archive.ubuntu.com/ubuntu/ precise universe" >>
/etc/apt/sources.list
RUN apt-get update
RUN apt-get install -y nodejs
RUN mkdir /var/www
ADD app.js /var/www/app.js
CMD ["/usr/bin/node", "/var/www/app.js"]

Permettez-moi de vous montrer un exemple simple pour créer un échantillon Dockerfile et créer une image en l'utilisant.

Création d'un fichier Docker

Créez un fichier nommé Dockerfile , ajoutez le contenu dans les fichiers. Dans l'exemple suivant, nous mettons à jour et installons le vim et boucle .

# cat dockerfile
FROM alpine

RUN apk update
RUN apk add vim
RUN apk add curl

dockerfile pour alpin

Nous avons maintenant le Dockerfile en place. Continuons et construisons une image en utilisant le Dockerfile.

Créer une image à l'aide de Dockerfile

Pour créer une image à partir du Dockerfile, exécutez simplement :

# docker build -t devops .

Veuillez faire attention au point (.) à la fin.

Conformément à la commande ci-dessus, Docker commencera à créer des images automatiquement en lisant les instructions du Dockerfile enregistré dans le répertoire de travail courant.

Si le Dockerfile est enregistré ailleurs, vous pouvez mentionner son chemin en utilisant -f drapeau comme ci-dessous.

# docker build -f /path/to/a/Dockerfile .

Après avoir créé l'image, nous pouvons l'exécuter à l'aide de la commande :

# docker run -it devops

C'est ainsi que l'on peut créer des images de conteneur personnalisées à l'aide de Dockerfile. J'espère que cela t'aides. Nous n'avons couvert que les bases. Vous pouvez faire beaucoup plus avec Dockerfile. Je vous recommande de vous référer à la référence Dockerfile officielle guide pour en savoir plus.

Suggestion de lecture :

  • Expliquer les concepts de mise en réseau Docker
  • Expliquer les volumes Docker avec des exemples
  • Comment mettre à jour automatiquement les conteneurs Docker en cours d'exécution
  • ctop – Un outil de surveillance en ligne de commande pour les conteneurs Linux
  • Portainer – Le moyen le plus simple de gérer Docker
  • PiCluster :une application Web simple de gestion Docker
  • Dockly – Gérer les conteneurs Docker depuis le terminal

À propos de l'auteur :

Dhruv Tiwari est un ingénieur DevOps qui aime automatiser les choses, travailler avec Linux à grande échelle et rêver du jour où les systèmes seront suffisamment intelligents pour ne jamais avoir besoin de se connecter à une machine Linux. Journey Of CI/CD du code source au déploiement du code jusqu'à la production.


Docker
  1. Une brève introduction aux unités de chemin

  2. Extraire le fichier de l'image Docker ?

  3. Une introduction à Docker

  4. Comment modifier les images Docker

  5. Comment créer une image Docker à partir d'un conteneur et d'un Dockerfile

Une brève introduction à Ansible Vault

Qu'est-ce qu'un manifeste d'image Docker ?

Déployer une installation de production Docker MariaDB

Comment réduire la taille de l'image Docker dans les conteneurs Docker

Comment créer une image Docker personnalisée avec Dockerfile

Partage d'images Docker sur Docker Hub