Docker - TP 2 : Dockerfile

Thomas S.

2018-2019

Docker - TP 2 : Dockerfile

Sommaire

  • Une image basique
  • Très personnalisable

Une image basique

Dockerf... quoi ?

  • Fichier permettant de build un image
  • Nom du fichier : Dockerfile
  • Script de définition propre à Docker

Une image basique

Tips, le .dockerignore

Fonctionne comme le .gitignore, permet d'éviter de prendre en compte des fichiers au build.

Une image basique

Dockerfile

FROM debian

RUN apt-get update -y && \
    apt-get install -y cowsay

CMD /usr/games/cowsay "Hello World !"
docker build -t test .
docker run test

Très personnalisable

Instructions

  • FROM : Base de l'image
  • RUN : Commandes requises pour mettre en place
  • CMD : Ce qui doit être éxécuté

Très personnalisable

Instructions

  • VOLUME : Lié volume entre container et host
  • EXPOSE : Ports ouverts du container vers l'host
  • COPY ADD : Copier des fichiers dans l'image (Diff. )
  • WORKDIR : Définit le chemin d'éxécution

Très personnalisable

TP1

Faire une image Ubuntu permettant de donner le checksum MD5 du fichier suivant (directement présent dans l'image).
Solution : d5eefcccdb834958512bed157d01f3a7
Faire 3 variantes :
  • Avec wget (Dans un RUN du Dockerfile)
  • Avec ADD/COPY (dans le Dockerfile)
  • Avec volume

Très personnalisable

TP1

Faire une image php:apache permettant d'afficher ce projet Hello World ! du framework Slim sur le port 9876 de l'host
(Attention, ça ne sert à rien d'utiliser -v).

Très personnalisable

Images multiples

  • Images séparées par FROM
  • Utilité : Créé des images légères
  • Seul la dernière image est conservée
  • TL;DR : Idéal dans la mise en place/compilation logiciel

Très personnalisable

Images multiples : exemple

FROM ubuntu AS build-env
//Some compilation
FROM debian
COPY --from=build-env /path/on/build/env.so /usr/local/lib/

CMD ........

Très personnalisable

TP3

Faire une image Linux du projet Tetris , compilée à partir d'une autre image Linux. Pour l'éxécuter, il faudra la lancer en ENTRYPOINT dans l'image debian:buster-slim.
Pour les plus fort, faire une compilation statique et mettre l'éxécutable dans une image busybox.

Très personnalisable

TP4

Faire une image avec un serveur web. Cette application web doit être modifiable en live. L'objectif est de changer le temps de réponse d'une page pour mettre en avant le HEALTHCHECK.
À l'exécution, il faudra choisir la bonne politique de redémarrage --restart.

Très personnalisable

Docker Hub

  • Registre pour sauvegarder ses containers
  • Version personnelle
  • docker login (Inscription ici)
  • docker push NOM_DE_L_IMAGE
  • Le nom de l'image devra être sous la forme : pseudo/image_name:version

Très personnalisable

Gitlab et intégration continue

Dernière maj : Voir Github 🐻 1 /
Précédent
Suivant