Initiation à Docker via l’installation d’un GitHub-like locale.
Introduction
Enfin je me lance sur Docker !
J’étais assez récalcitrant à l’idée de taper simplement une commande sans rien comprendre et que ça fonctionne.
Mais bon, si l’on veut faire du Docker il faut bien commencer par le plus simple…
On va donc voir comment installer Docker et lancer notre premier conteneur.
Pour cet exemple, on lancera Gitea, un service Git autohébergé
avec une interface Web.
Ensuite, on supprimera toutes traces de Gitea
de notre serveur.
Installation de Docker
On va donc suivre la documentation officielle en installant en premier les dépendances.
# On passe en root (c'est plus simple)
sudo -i
apt update
apt install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
On va ensuite ajouter le dépôt de notre Docker.
Pour cela, il faut ajouter la clé GPG pour que notre système
s’assure bien à chaque fois qu’il télécharge depuis le vrai dépôt.
mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Ainsi, on ajoute le dépôt des versions stables à notre liste et on met cette dernière à jour.
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
apt update
Et enfin on peut installer Docker avec l’installation des packages suivants :
apt install docker-ce docker-ce-cli containerd.io
Pour vérifier que Docker est bien installé on peut faire un docker run hello-world
.
Remarque
Information
Cette commande télécharge une image de test et l’exécute dans un conteneur. Lorsque le conteneur s’exécute, il imprime un message d’information et se ferme.
Lancement de Gitea
Remarque
Update du 13/02/2022
Initialement, cet article utilisait le port 10080
mais cela ne fonctionne plus maintenant.
J’ai donc mis le port 980
à la place et accordé celui
de SSH pour plus de cohérence.
Il semblerait que cela soit dû à l’extension d’une liste
de ports bloqués nativement pas les navigateurs Web.
En effet, ce port est celui utilisé par
AMANDA.
Maintenant que le nécessaire est installé, on va lancer le conteneur Gitea avec la commande suivante :
docker run \
-d \
--name=gitea \
-p 922:22 \
-p 980:3000 \
-v /var/lib/gitea:/data \
gitea/gitea:latest
-d
: lancement en mode deamon (en arrière-plan)--name=gitea
: le nom donné au conteneur-p 922:22
: mappe le port 922 de l’hôte sur le 22 du conteneur
Le SSH du conteneur sera alors accessible depuis le port 922-p 980:3000
: mappe le port 922 de l’hôte sur le 3000 du conteneur
Sert ici pour l’accès à l’interface Web-v /var/lib/gitea:/data
: mappe le dossier/var/lib/gitea
de l’hôte sur le dossier/data
du conteneur
Si ce dossier n’existe pas sur votre machine, il faut le créer !gitea/gitea:latest
: nom de référence de l’image hébergée sur Docker Hub dans sa dernière version
L’image de Gitea va donc être téléchargée sur le Docker Hub et lancée sur notre machine.
Une fois que le prompt nous a rendu la main, on peut se rendre sur notre navigateur en
renseignant l’adresse de notre machine et en spécifiant le port “externe” 980.
Ayant fait ce tutoriel sur un Ubuntu Desktop, j’y accède depuis son navigateur
avec l’URL http://localhost:980
:
Sur Gitea, en cliquant sur le bouton de connexion, on vous demande de renseigner certaines informations.
Vous pouvez laisser tout par défaut, mais n’oubliez pas de créer votre compte administrateur dans la partie
des Paramètres facultatifs !
Une fois votre configuration validée, la page se recharge sur le port interne du conteneur.
Remettez celui de l’hôte et vous serez sur votre GitHub-like !
Effacement de Gitea
Suppression du conteneur
Maintenant qu’on a expérimenté l’utilisation de Docker, on va le stopper et supprimer toutes traces.
Étant donné qu’on lui a donné un nom, on peut le stopper avec la commande docker stop gitea
.
Sinon il faut spécifier l’ID du conteneur qu’on récupère avec un docker container ls
.
On supprime ensuite le conteneur avec docker container rm gitea
.
Suppression de l’image
L’image se supprime avec la commande docker rmi gitea/gitea
.
Si on ne connait pas le nom de l’image, on peut le retrouver
avec un docker images
.
On peut aussi supprimer l’image en utilisant l’ID de l’image.
Suppression des données
Des volumes on pu être créer, on les supprimes avec docker volume prune
.
Les données de Gitea se trouvent aussi sur notre machine hôte dans le dossier /var/lib/gitea
.
On les supprime donc avec un rm -rf /var/lib/gitea
Suppression tous-en-un
Pour stopper, supprimer tous les conteneurs ainsi que toutes les images, on peut exécuter la suite de commande suivante :
docker stop $(docker ps | sed -n '2,$p' | awk '{print $1}')
docker system prune -a # Cette commande demande d'envoyer un 'y' pour confirmer
rm -rf /var/lib/gitea
Conclusion
Nous avons donc vu ensemble comment utiliser les bases de Docker
en plus d’une découverte rapide de Gitea.
Comprendre ces bases de Docker va avérer très utile dès que l’on voudra
déployé des conteneurs d’une manière plus complexe.
Le prochain tutoriel sur Docker (quand il viendra 🦥), utilisera docker-compose.
Mes notes sur Docker
Lister les processus Docker :
docker ps
Lister/effacer les conteneurs :
docker container ls
docker rm <container id>
Lister/effacer les images :
docker images
docker rmi <image id>
Lister/effacer les volumes :
docker volume ls
docker volume rm <volume name>
Lister les différences entre le conteneur et l’image utilisée :
docker diff <container id>
Enregistrer l’image modifiée :
docker commit <container id> <un_nom_d'image>
Sauvegarder une image (pour export)
docker save <un_nom_d'image> > /tmp/MonImage.tar