Fonctionnement du Dockerfile

Présentation

Le Dockerfile définit comment votre environnement va fonctionner à l’intérieur du conteneur.

L’accès aux ressources comme les interfaces réseaux, les espaces disque sont virtualisées à l’intérieur de l’environnement, ce qui les isolent du reste du système.

Il est nécessaire de faire le mapping des ports pour y avoir accès depuis l’extérieur, de spécifier les fichiers qui seront copiés dans le conteneur, etc…

Après avoir fait cela, on peut supposer que notre application fonctionnera de la même manière, peut importe le système qui exécutera le conteneur.

Usage

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

Le « . » spécifie l’emplacement des répertoires/fichiers qui seront défini comme « contexte » pour le Dockerfile.

Il est possible de tester la syntaxe du Dockerfile

docker build -t test/myapp .
Sending build context to Docker daemon 2.048 kB
Error response from daemon: Unknown instruction: RUNCMD

Les instructions du Dockerfile suivent la syntaxe suivante :

# Comment
INSTRUCTION arguments

Instructions

FROM : Spécifie l’image de base avec laquelle le conteneur sera construit

FROM <image>[:<tag>] [AS <name>]

ARG : Définit les variables qui peuvent être passer par l’utilisateur au démarrage du conteneur

ARG  CODE_VERSION=latest
FROM base:${CODE_VERSION}

ENV : Permet de déclarer une variable d’environnement

RUN : Permet l’exécution d’une commande ou d’un script

CMD : Tout comme RUN, elle permet l’exécution d’une commande ou d’un script mais elle ne peut être déclaré qu’une seul fois dans un Dockerfile

LABEL : Ajoute des méta-données à une image

LABEL "com.example.vendor"="ACME Incorporated"
LABEL com.example.label-with-value="foo"
LABEL version="1.0"
LABEL description="This text illustrates \
that label-values can span multiple lines."

EXPOSE : Permet de spécifier à Docker les ports réseaux nécessaires à ouvrir au démarrage du conteneur

ADD : Copie des nouveaux fichiers, dossiers depuis la source spécifiée vers le système de fichier de l’image au chemin indiqué.

ADD [--chown=<user>:<group>] <src>... <dest>
ADD [--chown=<user>:<group>] ["<src>",... "<dest>"]

ADD permet également de récupérer des éléments depuis une URL ou de décompresser une archive.

COPY : Plus strict que ADD, cette instruction est préférée à celle-ci.

ENTRYPOINT : Similaire à l’instruction CMD mais ne peut pas être surchargé au démarrage du conteneur.

VOLUME : Créer un point de montage dans le conteneur

FROM ubuntu
RUN mkdir /myvol
RUN echo "hello world" > /myvol/greeting
VOLUME /myvol

USER : Définit l’utilisateur qui sera utilisé pour les instructions RUN, CMD et ENTRYPOINT

    FROM microsoft/windowsservercore
    # Create Windows user in the container
    RUN net user /add patrick
    # Set it for subsequent commands
    USER patrick

WORKDIR : Définit le répertoire de travail pour les instructions RUN, CMD, ENTRYPOINT, COPY et ADD

ONBUILD : Ajoute à l’image un déclencheur qui sera exécuter lorsque l’image sera utilisée comme base de construction d’une autre image.

HEALTHCHECK : Permet de définit une commande qui vérifiera l’état de santé du conteneur lorsqu’il sera en exécution

HEALTHCHECK --interval=5m --timeout=3s \
  CMD curl -f http://localhost/ || exit 1

SHELL : Modifie le shell par défaut

Publié par

Allan

Développeur web fullstack

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *