>
[
$
@
X
}
+

NOUS LES DEVS

Se connecter à un conteneur

A la découverte de Docker partie 5

Niveau : intermédiaire
</> </> </>

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é.

docker container ls -a

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) :

docker_nginx_exemple

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.

docker_vim_edit_nginx

Sortie

Pour sortir du conteneur, un petit coup de exit.

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 -

NOUS LES DEVS

Vous aimez ce que je fais ? Vous voulez que j'en fasse plus ? dans le développement du blog.