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.

Image Description

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 terminal tty au conteneur.
  • -d : Lance le conteneur en mode detached, 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 de tag, par défaut ce sera latest)

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 !