docker run --rm hello-world
La commande docker run fait appel au centre de dépot de Docker qui fournit des conteneurs prêts à l'emploi pour les télécharger sur votre machine la première fois.
Ces librairies sont toutes disponibles sur leur "Hub" : https://hub.docker.com/.
On peut rajouter des options : docker run --name nom_du_conteneur -it nom_image bash
docker ps permet de lister tous les conteneurs actifs (ps = processus).
Alors que docker ps -a affichera tous les conteneurs même non actifsexit), on peut faire :
docker start nom_du_conteneur pour le relancer
(attention, le conteneur doit déjà être créé avec run)docker exec -it nom_du_conteneur bash pour y accéderdocker stop nom_du_conteneur pour l'arrêterExercice : Créer un fichier dans votre conteneur et quitter le. Relancer le et chercher le fichier ...
docker commit nom_du_conteneur nom_de_image permet de créer une image d'un conteneur.
En pratique on rajoute -m 'Message de commentaire' pour annoter les modifications
docker images liste toutes les images enregistrées.docker save -o mon_archive.tar nom_de_image (-o = output)docker login puis docker tag nom_de_image ID_Docker_Hub/nom_du_backup.
docker push ID_Docker_Hub/nom_du_backupdocker load -i mon_archive.tar (-i = input)docker pull ID_Docker_Hub/nom_du_backupdocker diff nom_du_conteneurdocker history nom_de_imagedocker rename ID_Conteneur nom_du_conteneur
On peut limiter l'ID d'un conteneur ou d'une image à ses trois premiers caractères
docker rmi nom_de_imagedocker system pruneUne fois que vous savez faire et gérer des conteneurs, on a souvent besoin de plusieurs commandes au lancement de la machine.
On peut automatiser ces instructions dans un fichier qui devra se nommer "Dockerfile". Mettez les instructions suivantes dans ce fichier :
FROM nom_de_image : Nom de l'image de base qui devra être chargéeMAINTAINER nom_admin : Nom de la personne en charge du conteneurIl faut ensuite "construire" votre nouvelle image avec docker build -t nom_image /repertoire_du_dockerfile. Certaines opérations sont mises en cache.
Lancer maintenant un nouveau conteneur à partir de cette image !
RUN commande_bash : Lance une commande (par exemple et recommandé apt-get update sur un debian).
On peut en mettre plusieurs && apt-get install ...WORKDIR /repertoire permet de se déplacer dans les dossiers (l'équivalent de cd /repertoire)ADD /repertoire_local_ou_distant /repertoire_destinationIl est très intéressant de lancer plusieurs conteneurs en simultané et surtout de les lier entre eux afin qu'ils communiquent.
Il faut pour cela créer un fichier docker-compose.yml
services:
conteneur_1:
image: nom_image_1
conteneur_2:
image: nom_image_2
conteneur_3:
image: nom_image_3
Remarque : Les intitulés "conteneur_i" servent juste à faire des liaisons, vous pouvez choisir le nom que vous voulez.
Vous pouvez lancer vos conteneurs avec la commande docker-compose up
En cas de corruption des fichiers, vous pouvez les réinitialiser avec docker-compose rm -v -f
ports:
- 8000:80
Vous pouvez tester d'afficher votre navigateur sur le bon port !
MYSQL_ROOT_PASSWORD=mot_de_passe et MYSQL_DATABASE=votre_bdd/usr/sbin/mysqld: ready for connectionsExercice 1 : Ouvrez un conteneur mysql et un conteneur adminer puis se connecter sur l'interface adminer avec l'utilisateur root.
Exercice 2 : Monter un serveur mail de test avec l'image maildev/maildev