Ceci est une ancienne révision du document !
Table des matières
Workshop Docker : les conteneurs faciles
Page dédiée à la présentation de Docker
Préliminaires
Installer Docker
Pour installer docker avant de venir :
sudo apt install docker.io
Ou bien vous pouvez suivre la doc d'installation.
Vous devez etre dans le groupe docker pour pouvoir interagir avec le démon Docker sans passer par le user root. Pour cela :
sudo usermod -aG docker MON_USERNAME sudo su - MON_USERNAME id
Vous devez voir apparaitre le groupe docker dans la liste de vos groupes.
Télécharger les images du workshop
Il est Préalables pour télécharger les images à l'avance :
docker pull alpine:3.12 docker pull python:3.8-alpine docker pull python:3.5-alpine docker pull mysql:8 docker pull wordpress:5.5-apache
Présentation des concepts
- Conteneur <> VM
- Images
- Layered FS (Système de fichier multi couche)
- Dockerfile
- Docker Hub
- Exposition de ports
- Volumes
Reference
Exemples d'utilisation de Docker
Hello World
Utiliser un conteneur léger alpine linux pour executer une commande shell qui affiche "Hello World !". Documentation de l'image alpine
docker run --rm alpine:3.12 echo "Hello World !"
Lancer un shell dans un conteneur alpine linux.
docker run --rm -it alpine:3.12 sh
Pour sortir vous pouvez taper la la commande "exit" ou bien le raccourci "CTRL-D".
Executer un shell python v3.8 sans se préocuper de l'installation de python sur sa machine
docker run --rm -it python:3.8-alpine python
Reproduire un bug avec python 3.5 sans avoir à l'installer
docker run --rm -it python:3.5-alpine python
Démarrer un serveur mysql rapido en mode démon
Documentation de l'image mysql Pour démarrer le serveur et exposer le port 3306 du conteneur sur sa machine. _On précise que l'on n'utilise pas de mot de passe admin pour faire simple avec la variable d'environnement MYSQL_ALLOW_EMPTYPASSWORD=true tel qu'indiqué dans la documentation de l'image.
docker run --rm -d -p3306:3306 --name="ma_bd" -e "MYSQL_ALLOW_EMPTY_PASSWORD=true" mysql:8 docker logs -f ma_bd
Pour connecter un client mysql au serveur depuis le conteneur démarré.
docker exec -it ma_bd
Pour tuer le conteneur de la BD.
docker kill ma_bd
Démarrer le dernier wordpress sans rien installer (as usual)
Documentation de l'image wordpress Le wordpress à besoin d'une BD pour fonctionner. On peut néanmoins constater que le service démarre bien.
docker run --rm wordpress:5.5-apache
Démarrer un mysql + wordpress
On démarre les 2 conteneurs dans le meme réseau pour leur permettre de se parler. On configure le conteneur wordpress comme demandé sur la documentation de l'image.
docker network create wordpress docker run --rm -d --network=wordpress --name="ma_bd" -e "MYSQL_ALLOW_EMPTY_PASSWORD=true" mysql:8 docker run --rm -d -p8080:80 --network=wordpress --name="mon_wordpress" -e "WORDPRESS_DB_HOST=ma_bd" -e "WORDPRESS_DB_USER=root" wordpress:5.5-apache docker ps docker logs -f mon_wordpress
Et visiter la page http://localhost:8080.
Dockerfile
Pour travailler, il faut commencer par cloner le dépôt git d'exemple avec la commande suivante.
cd git clone https://github.com/mxbossard/dockerfile-example.git cd dockerfile-example
Puis vous pouvez suivre le contenu du fichier README.md situé à la racine du dépot git.
Docker compose
Un autre dépot à cloner pour travailler sur le sujet docker-compose avec la commande suivante :
cd git clone https://github.com/mxbossard/docker-compose-example.git cd docker-compose-example
Puis vous pouvez suivre le contenu du fichier README.md situé à la racine du dépot git.