4. Manipulation d'un conteneur - Docker
Entrons dans les détails en explorant les fonctionnalités des conteneurs dans Docker.
Manipulons
Plutôt que de lancer un conteneur avec l'image hello-world
qui n'a pas d'intérêt si ce n'est de tester la bonne installation de Docker, nous allons dans cette partie, utiliser l'image du célèbre langage de programmation Python.
Afin de savoir si une image Docker est disponible, vous pouvez vous rendre sur le site web du Docker Hub accessible ici : https://hub.docker.com/
En recherchant l'image python
, dans l'onglet tags
on atterrit sur cette page :
Comme vous pouvez le constater, il existe une multitude de tags. Nous nous attarderons plus tard sur comment choisir le bon tag d'une image Docker.
Pour rester simple dans notre exemple, comme nous savons que l'image Python existe, nous allons prendre la version latest
.
Pour ce faire, lancer la commande suivante :
docker pull python
Par défaut, lorsque l'on précise pas de tag, Docker va essayer de pull
le tag latest
.
La syntaxe de la commande suivante est donc exactement identique :
docker pull python:latest
Maintenant que nous avons l'image Docker python:latest
en local, lançons un conteneur à partir de cette image avec quelques arguments supplémentaires :
docker run -td --name mon-conteneur-python python
Décomposons la commande :
-t
: Alloue un terminaltty
au conteneur.-d
: Lance le conteneur en modedetached
, cela signifie qu'il tournera en arrière-plan.--name
: Précise le nom du conteneur.python
: Correspond au nom de l'image a exécuter (si l'on ne précise pas detag
, par défaut ce seralatest
)
Maintenant que nous avons lancé notre conteneur, regardons son son statut avec la commande suivante :
docker ps
Retour :
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d8778a93148b python "python3" 8 seconds ago Up 7 seconds mon-conteneur-python
Nous pouvons observer que notre conteneur est maintenant up
et tourne en arrière-plan. Nous pouvons voir qu'il exécute la commande python3
et attends donc d'exécuter des programmes.
Exécuter une commande
Maintenant que nous avons un conteneur qui tourne en arrière-plan, nous allons exécuter notre première commande dans ce conteneur.
Essayons d'afficher la version de Python tiens !
Pour ce faire, nous allons utiliser la commande docker exec
comme ceci :
docker exec -t mon-conteneur-python python3 --version
🎉 Vous avez exécuté votre première commande dans un conteneur.
Mais si l'on peut exécuter toutes les commandes que l'on souhaite sur un conteneur, on peut aussi exécuter.... un SHELL !
Se connecter à un conteneur
Et oui vous l'avez compris, pour se connecter à un conteneur, le principe reste le même que l'exécution d'une commande. Cette fois-ci, ce sera la commande bash
que nous allons exécuter en mode interactif
sur le conteneur afin d'avoir un Shell.
La commande a exécuter est :
docker exec -ti mon-conteneur-python bash
Nous avons rajouté l'argument -i
afin d'exécuter la commande en mode interactif
et ainsi pouvoir exécuter les commandes sur le Shell ouvert précédemment.
Vous commencez à voir la puissance de Docker ? Avec quelques commandes seulement, sans posséder Python sur votre machine, vous pouvez disposer de l’interpréteur Python dans un environnement cloisonné sans avoir à installer et désinstaller l'outil.
Mais en parlant de désinstaller, si je n'ai plus besoin de mon conteneur, comment est-il possible de le supprimer ?
Tout simplement avec la commande docker rm
comme ceci :
docker rm -f mon-conteneur-python
L'argument -f
correspond à la version courte de --force
. Le fait de forcer la suppression du conteneur va d'abord stopper le conteneur avec la commande docker stop
puis le supprimer avec docker rm
Conclusion
Nous avons pu manipuler un conteneur en exécutant une commande dedans, en s'y connectant en exécutant un Shell à l'intérieur ainsi que sa suppression.
N'hésitez donc pas à vous familiariser d'avantage avec les commandes énoncées lors de ce cours afin d'être à l'aise avec ces commandes qui vous serviront au quotidien dans l'administration de conteneurs avec Docker !
Dans le cours suivant, nous allons explorer la partie réseau de Docker en lançant des conteneurs avec encore plus d'options, notamment l'exposition de ports !