Pourquoi ?
Dans ce chapitre, je vais essayer de me connecter à un conteneur. Ça va me permettre de voir un peu ce qu’il y a à l’intérieur et d’y faire des modifications. En général, on va chercher à se connecter pour lancer une commande spécifique (pour faire une mise à jour par exemple), ou bien modifier un fichier texte (un fichier html d’une page web).
Préparation
Je vais commencer par démarrer un conteneur Nginx.
docker container run -d -p 9001:80 nginx
Je vérifie que le conteneur est bien lancé.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0fb5783ea907 nginx "nginx -g 'daemon of…" 5 seconds ago Up 4 seconds 0.0.0.0:9001->80/tcp clever_albattani
Ensuite, je vais essayer de modifier la page d’accueil de Nginx qui ressemble pour le moment à ça (disponible sur localhost:9001) :
Exec
Maintenant, je vais demander à Docker d’exécuter le programme bash (en gros c’est la console) en mode interactif, de cette manière j’aurai un accès complet au conteneur.
Et c’est la commande exec qui va me permettre de faire ça, j’y ajoute les options -ti (pseudo terminal + mode interactif) suivies de l’ID du conteneur et enfin le nom du programme à executer.
docker container exec -ti 0fb5783ea907 bash
#Le résultat: Me voici connecté
root@0fb5783ea907:/#
Installation de VIM
J’ai identifié le fichier html et lorsque je tente de l’éditer en vim, je reçois un petit message d’erreur.
vim /usr/share/nginx/html/index.html
#Message d'erreur
bash: vim: command not found
Et c’est plutôt utile ! C’est typiquement l’exemple que je cherchais à avoir pour pouvoir installer un paquet et découvrir la façon de faire des mises à jour directement dans un conteneur.
D’abord, je vais voir sur quel type de serveur Linux tourne l’image Nginx en faisant un petit coup de cat.
cat /etc/issue
#Le résultat
Debian GNU/Linux 9 \n \l
C’est une Debian, je tape donc la commande apt-get pour voir si le gestionnaire de paquets est bien installé (c’est normalement lui qui est utilisé sur les Debian) et je balance un update dans la foulée.
#Je vérifie si le gestionnaire de paquets est présent
apt-get
#Je balance un update
apt-get update
J’installe Vim et ensuite je réessaye d’éditer mon fichier html.
#Installation de Vim
apt-get install vim
#Edition du fichier html
vim /usr/share/nginx/html/index.html
Maintenant, je peux faire des modifications directement dans la page de présentation de Nginx.
Sortie
Pour sortir du conteneur, un petit coup de exit.
Et si je vais sur l’URL localhost:9001, je peux voir que ma page a bien été adaptée en fonction des modifications que j’ai faites dans le fichier html à l’intérieur du conteneur.
21/01/2019
Yann Vangampelaere - nouslesdevs -