Installation de Docker-CE sur macOS 10.13

Ce tutoriel aborde les bases de la gestion de conteneurs avec Docker.

Publié le 29/10/2018

Par rapport à une machine virtuelle classique, Docker est une solution est plus légère, en terme de ressources. Les conteneurs apportent un gain significatif au niveau du stockage et la possibilité d'historiser les conteneurs.

Docker fourni aujourd'hui avec les docker files et docker-compose, un moyen de décrire les propriétés d'un conteneur, de le construire et de l'exécuter. Avec docker-compose on va pouvoir construire un ensemble de conteneurs, et donc on va pouvoir virtualiser des architecture n-tiers, applications micro-services et autres architectures découplées.

Avec un outils de provisionnement [Ansible, Puppet, Chef, etc...], on pourra disposer d'une infrastructure as code [IaC] que l'on pourra instancier sur un orchestrateur de conteneurs comme Kubernetes. Il sera aussi possible de reproduire de façon automatisée cet environnement chez un fournisseur cloud [OVH, GCP, etc...].

Installer Docker-CE sur le poste de travail

Télécharger Docker-CE :

https://store.docker.com/editions/community/docker-ce-desktop-mac


docker --version
docker info

1 - Les conteneurs

1.1 - Test de l'installation avec le conteneur hello-world


docker run hello-world

1.2 - Commande de bases

Liste des images téléchargées :


docker image ls

Liste de conteneurs (running, all, all in quiet mode) :


docker container ls
docker container ls --all
docker container ls -aq

1.3 - Création d'une image Debian 9 avec un Dockerfile

Création d'un dossier :


mkdir deb9
cd deb9

Création du fichier Dockerfile :


nano Dockerfile

FROM debian:latest

1.3.1 - Build d'une image


docker build -t debian .

Vérification de la présence de limage :


docker image ls

1.3.2 - Ajout de paquets et sauvegarde du conteneur

On souhaite ajouter des paquets à notre conteneur et sauvegarder une nouvelle image. Afin de pouvoir connecter ansible, on va activer la connexion ssh pour l'utilisateur root :


docker run -ti debian /bin/bash
apt-get update && apt-get upgrade
apt-get install nano ssh
nano /etc/ssh/sshd_config


Port 22
PermitRootLogin yes

Installation d'Ansible :


apt-get install ansible sshpass

Quitter le conteneur :

ctrl + d

Sauvegarde du conteneur :


docker commit ID_CONTAINER deb9/ansible

Exécution du conteneur :


docker run -ti deb9/ansible /bin/bash

1.4 - Exécution du conteneur

Avec accès en ligne de commande :


docker run -ti debian /bin/bash

Pour exécuter en tache de fond :


docker run -dt debian

Pour rendre le conteneur accessible depuis le sytème hôte :


docker run -dt -p 2222:22 -p 80:80 debian 

On indique en premier le port du système hôte et en second le port du conteneur.

Arrêt du conteneur :


docker container stop CONTAINER_ID

1.5 - Arrêt et suppression des conteneurs

Arrêt de tous les conteneurs :


docker stop $(docker ps -a -q)

Suppression de tous les conteneurs :


docker rm $(docker ps -a -q)

1.6 - Suppression des images

Suppression de l'image locale :


docker rmi app/test:v1

Liste des images "dangling" :


docker images -f dangling=true

Les images "dangling" désignent celles qui n'ont pas de relation avec une image taggée.

Suppression des images dangling" :


docker images purge

1.7 - Partage d'une image sur hub.docker.com

Vous devez au préalable disposer d'un compte sur hub.docker.com et d'avoir créer un dépôt pour l'image qu'on souhaite partager.


docker login

Tag de l'image :


docker tag image username/repository:tag

exemple : docker tag debian user/test:v1

Chargement de l'image sur le dépôt :


docker push username/repository:tag

exemple : docker push user/app:v1

Pull de l'image depuis le dépôt :


docker run -p 80:80 username/repository:tag

exemple : docker run -p 80:80 app/test:v1

Important : Une quantité d'images sont téléchargeables sur le net, il est important de valider la fiabilité des sources et des configurations employés.