Offrir des environnements invariables aux applications.
Docker propose une alternative plus légère (et donc plus performante) aux VM pour créer des environnements aux applications sans pour autant répliquer un OS.
Docker permet de construire (build) et pousser (push) des images de conteneurs (containers)
Une fois construit, un conteneur peut être démarré ou stoppé.
Les conteneurs peuvent avoir accès à des ressources du système où ils s'exécutent :
La description du conteneur est décrit dans un Dockerfile
.
Instruction | Description | Commentaire |
---|---|---|
# syntax <i>version</i> |
Version de syntaxe | Indique quelle version de dockerfile utiliser (en 1ʳᵉ ligne) |
# escape <i>char</i> |
Directive d'échappement | Indique quel est le caractère d'échappement (en 1ʳᵉ ligne). \ par défaut |
FROM <i>dockerImage</i> |
Indique à partir de quelle image cette image va être construite | Première ligne (ou 2ᵉ si directive) |
ARG <i>argument</i>=<i>value</i> |
Définit une variable de construction | Valeur à spécifier au moment de la construction (ou valeur par défaut), après FROM |
ENV <i>varname1</i>=<i>value1</i> <i>varname2</i>=<i>value2</i> |
Définit une variable d'environnement | Valeur $varname1 ou ${varname} disponible pendant la construction et l'exécution
|
WORKDIR <i>path</i> |
Spécifie le répertoire du conteneur où seront exécutées les prochaines instructions de build | Crée le répertoire si non existant, /. par défaut |
USER <i>username</i> |
Spécifie quel utilisateur va exécuter les prochaines commandes | L'utilisateur doit exister (root par défaut) |
ADD <i>source</i> <i>dest</i> |
Ajoute des fichiers/répertoires à l'image construite. | dest est absolu ou relatif au dernier WORKDIR. <i>source</i> peut être une URL. |
COPY <i>source</i> <i>dest</i> |
Ajoute des fichiers/répertoires locaux à l'image construite. | dest est absolu ou relatif au dernier WORKDIR |
RUN ["<i>command</i>", "<i>arg1</i>", "<i>argn</i>"] RUN <i>command</i> <i>arg1</i> <i>argn</i>
|
Execute une commande shell | |
EXPOSE <i>port</i>/<i>protocol</i> |
Déclare sur quel port le conteneur écoutera des requêtes réseau. <i>protocol</i> est `tcp` par
défaut
|
|
CMD [<i>commande</i>] |
Indique une commande à exécuter au démarrage du conteneur | |
ENTRYPOINT ['<i>commande</i>', '<i>arg1</i>', '<i>argn</i>'] |
Indique une commande à exécuter au démarrage du conteneur |