Skip to content

TP sur Docker pour les Devs

Par Nicolas Dewaele - adminrezo.fr

Document sous licence CC BY-SA

Armez-vous d'un aide mémoire des commandes Docker

ici ou

I- Présentation et installation

Questions générales

  • Que sont les containers ?
  • Qu'est-ce que Docker ?
  • Quelle différence y a-t-il entre containers et VMs ?
  • Dans quels contextes les containers sont-ils (in)utiles pour des développeurs ?

Pré-requis avant installation

  • Une VM sous Debian

Installation sous Debian

Suivre les instructions du site officiel de Docker.

II- Utilisation d'images du hub

Le hub Docker est le dépôt officiel où l'on trouve toutes les images : https://hub.docker.com/search?q=&type=image

Questions générales

  • Quelles images du Hub pouvez-vous utiliser pour développer ?
  • Quelles images du Hub pouvez-vous utiliser en production ?

Pratique

Python 3 :

  • Recherchez sur le hub Docker une image Python 3
  • Téléchargez et lancez un conteneur Python 3
  • Exécutez du code Python dans ce conteneur
  • Installez un logiciel avec pip (exemple : pip3 install Plone)
  • Arrêtez ce conteneur
  • Supprimez ce conteneur
  • Dans cinq terminaux, lancez cinq conteneurs Python3 en même temps (CTRL+D pour sortir) :
docker run -it python:3
docker run -it python:3
docker run -it python:3
docker run -it python:3
docker run -it python:3
  • Ces cinq conteneurs surchargent-ils la RAM de votre PC ?

Tomcat :

  • Recherchez sur le hub Docker une image de Tomcat
  • Téléchargez et lancez un conteneur Tomcat
  • Lancez une Web App sur Tomcat (si vous n'en avez pas, vous pouvez utiliser l'application de démo de Tomcat)
  • Arrêtez ce conteneur
  • Supprimez ce conteneur

Hello world !

Créer un "Hello world !" dans les langages suivants sans avoir à installer l'environnement de développement sur votre machine :

  • Golang
  • Java
  • PHP
  • Python
  • Ruby

Une liste de Hello World est présente sur Wikipedia

Exemple avec Golang :

# Lancer un container à partir de l'image golang dans sa dernière version
docker run -it golang
# Une fois l'image lancée, installer Nano (éditeur de texte)
root@ee580020f978:/go# apt update && apt install nano
# Créer le fichier Hello world et écrire le code
root@ee580020f978:/go# nano hello.go
# Compiler le source
root@ee580020f978:/go# go build hello.go
# Exécuter le binaire
root@ee580020f978:/go# ./hello

III- Création d'image

Questions générales

  • Quel est l'intérêt de créer sa propre image Docker ?
  • Quelles sont les bonnes pratiques pour la création d'image ?
  • Comment publier officiellement une image ?

Pratique

Création d'image depuis un Debian :

  • Téléchargez et lancez un conteneur Debian Stable
  • Dans le conteneur Debian, installez le serveur d'application JEE de votre choix :
  • Tomcat : apt update; apt install tomcat̀8 tomcat8-admin
  • ou autre (non testé avant ce TP) : Jonas, Jboss, Geronimo, GlassFish
  • Lancez votre serveur d'application : service tomcat8 start
  • Faites fonctionner une Web App dans ce serveur (si vous n'en avez pas, vous pouvez utiliser l'application de démo de Tomcat)
  • Enregistrez votre image (commit)

Construction d'image depuis un fichier DOCKERFILE :

  • Dans votre projet, créez un nouveau fichier nommé "Dockerfile"
  • Dans ce fichier écrivez les étapes permettant de construire une image de Tomcat, par exemple :
    # Image de base : Debian stable
    FROM        debian:stable

    # Mainteneur de l'image
    MAINTAINER  Nicolas Dewaele "nico@adminrezo.fr"

    # Variables d'environnement
    ENV         DEBIAN_FRONTEND noninteractive

    # Installation des dépôts
    RUN         apt update
    RUN         apt install -y -q tomcat8 tomcat8-admin

    # Service Tomcat
    /etc/init.d/tomcat8 start
  • Placez-vous dans le répertoire du Dockerfile et construisez l'image Tomcat : docker build . -t mon-nom/tomcat8
  • Lancez une instance de votre image : docker run -d mon-nom/tomcat8