Accédez à votre VM via l’interface Guacamole
Pour accéder au copier-coller de Guacamole, il faut appuyer sur Ctrl+Alt+Shift
et utiliser la zone de texte qui s’affiche (réappuyer sur Ctrl+Alt+Shift
pour revenir à la VM).
Pour installer Docker, suivez la documentation officielle pour installer Docker sur Ubuntu, depuis “Install using the repository” jusqu’aux deux commandes sudo apt-get update
et sudo apt-get install docker-ce docker-ce-cli containerd.io
.
curl -sSL https://get.docker.com | sudo sh
Lancez sudo docker run hello-world
. Bien lire le message renvoyé (le traduire sur Deepl si nécessaire). Que s’est-il passé ?
Il manque les droits pour exécuter Docker sans passer par sudo
à chaque fois.
root
docker
usermod -aG docker <user>
(en remplaçant <user>
par ce qu’il faut)sudo reboot
puis reconnectez-vous avec Guacamole pour que la modification sur les groupes prenne effet.bash
en copiant les commandes suivantes :sudo apt update
sudo apt install bash-completion curl
sudo mkdir /etc/bash_completion.d/
sudo curl -L https://raw.githubusercontent.com/docker/docker-ce/master/components/cli/contrib/completion/bash/docker -o /etc/bash_completion.d/docker.sh
sudo curl -L https://raw.githubusercontent.com/docker/compose/1.24.1/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
Important: Vous pouvez désormais appuyer sur la touche pour utiliser l’autocomplétion quand vous écrivez des commandes Docker
docker info # affiche plein d'information sur l'engine avec lequel vous êtes en contact
docker ps # affiche les conteneurs en train de tourner
docker ps -a # affiche également les conteneurs arrêtés
docker run
: https://docs.docker.com/engine/reference/run/Mentalité : Il faut aussi prendre l’habitude de bien lire ce que la console indique après avoir passé vos commandes.
Avec l’aide du support et de --help
, et en notant sur une feuille ou dans un fichier texte les commandes utilisées :
Lancez un conteneur Debian (docker run
puis les arguments nécessaires, cf. l’aide --help
) en mode détaché avec la commande echo "Debian container"
. Rien n’apparaît. En effet en mode détaché la sortie standard n’est pas connectée au terminal.
Lancez docker logs
avec le nom ou l’id du conteneur. Vous devriez voir le résultat de la commande echo
précédente.
Lancez un conteneur debian en mode détaché avec la commande sleep 3600
Réaffichez la liste des conteneurs qui tournent
Tentez de stopper le conteneur, que se passe-t-il ?
docker stop <conteneur>
NB: On peut désigner un conteneur soit par le nom qu’on lui a donné, soit par le nom généré automatiquement, soit par son empreinte (toutes ces informations sont indiquées dans un docker ps
ou docker ps -a
). L’autocomplétion fonctionne avec les deux noms.
sleep 3600
en mode détaché).debian_container
Le nom d’un conteneur doit être unique (à ne pas confondre avec le nom de l’image qui est le modèle utilisé à partir duquel est créé le conteneur).
debian2
docker run debian -d --name debian2 sleep 500
-i -t
) avec la commande /bin/bash
et le nom debian_interactif
.pull
).docker pull nginx
docker run --name "test_nginx" nginx
Ce conteneur n’est pas très utile, car on a oublié de configurer un port ouvert.
nginx
créé(s).nginx
avec cette fois-ci le port correctement configuré dès le début pour pouvoir visiter votre Nginx en local.docker run -p 8080:80 --name "test2_nginx" nginx # la syntaxe est : port_hote:port_container
On peut lancer des logiciels plus ambitieux, comme par exemple Funkwhale, une sorte d’iTunes en web qui fait aussi réseau social :
docker run --name funky_conteneur -p 80:80 funkwhale/all-in-one:1.0.1
Vous pouvez visiter ensuite ce conteneur Funkwhale sur le port 80 (après quelques secondes à suivre le lancement de l’application dans les logs) ! Mais il n’y aura hélas pas de musique dedans :(
Attention à ne jamais lancer deux containers connectés au même port sur l’hôte, sinon cela échouera !
docker rm -f funky_conteneur
8080
à partir de l’image officielle de Wordpress du Docker HubNous pouvons accéder au Wordpress, mais il n’a pas encore de base MySQL configurée. Ce serait un peu dommage de configurer cette base de données à la main. Nous allons configurer cela à partir de variables d’environnement et d’un deuxième conteneur créé à partir de l’image mysql
.
Depuis Ubuntu:
docker network create wordpress
Cherchez le conteneur mysql
version 5.7 sur le Docker Hub.
Utilisons des variables d’environnement pour préciser le mot de passe root, le nom de la base de données et le nom d’utilisateur de la base de données (trouver la documentation sur le Docker Hub).
Il va aussi falloir définir un nom pour ce conteneur
inspectez le conteneur MySQL avec docker inspect
Faites de même avec la documentation sur le Docker Hub pour préconfigurer l’app Wordpress.
En plus des variables d’environnement, il va falloir le mettre dans le même réseau, et exposer un port
regardez les logs du conteneur Wordpress avec docker logs
visitez votre app Wordpress et terminez la configuration de l’application : si les deux conteneurs sont bien configurés, on ne devrait pas avoir à configurer la connexion à la base de données
avec docker exec
, visitez votre conteneur Wordpress. Pouvez-vous localiser le fichier wp-config.php
? Une fois localisé, utilisez docker cp
pour le copier sur l’hôte.
Lancez la commande docker ps -aq -f status=exited
. Que fait-elle ?
Combinez cette commande avec docker rm
pour supprimer tous les conteneurs arrêtés (indice : en Bash, une commande entre les parenthèses de “$()
” est exécutée avant et utilisée comme chaîne de caractère dans la commande principale)
S’il y a encore des conteneurs qui tournent (docker ps
), supprimez un des conteneurs restants en utilisant l’autocomplétion et l’option adéquate
Listez les images
Supprimez une image
Que fait la commande docker image prune -a
?
docker export votre_conteneur -o conteneur.tar
, puis tar -C conteneur_decompresse -xvf conteneur.tar
pour décompresser un conteneur Docker, explorez (avec l’explorateur de fichiers par exemple) jusqu’à trouver l’exécutable principal contenu dans le conteneur.Portainer est un portail web pour gérer une installation Docker via une interface graphique. Il va nous faciliter la vie.
docker volume create portainer_data
docker run --detach --name portainer \
-p 9000:9000 \
-v portainer_data:/data \
-v /var/run/docker.sock:/var/run/docker.sock \
portainer/portainer-ce
Remarque sur la commande précédente : pour que Portainer puisse fonctionner et contrôler Docker lui-même depuis l’intérieur du conteneur il est nécessaire de lui donner accès au socket de l’API Docker de l’hôte grâce au paramètre --mount
ci-dessus.
Visitez ensuite la page http://localhost:9000 ou l’adresse IP publique de votre serveur Docker sur le port 9000 pour accéder à l’interface.
il faut choisir l’option “local” lors de la configuration
Créez votre user admin et choisir un mot de passe avec le formulaire.
Explorez l’interface de Portainer.
Créez un conteneur.