Jouer avec Docker et Python
Oubliez les installations Python compliquées. Découvrez comment exécuter rapidement vos scripts Python avec des containers Docker, du « Hello World » à un jeu du pendu, et simplifiez votre développement.
Traduction automatique
Cet article a plus d'un an, mais il a été relu le 30 juillet 2026 — son contenu est toujours exact.

Cet article exécute des scripts Python sans aucune installation locale, grâce à l'image Docker officielle python (docker run ... python python Hello.py), en passant d'un script « Hello World » à un jeu du pendu en console — de quoi montrer à quelle vitesse on peut commencer à expérimenter avec un nouveau langage grâce à Docker.
Vous souvenez-vous de l'époque où vous vouliez apprendre un nouveau langage de programmation comme Python ? De quoi aviez-vous besoin avant même de pouvoir programmer votre premier Hello World ? Il fallait installer le langage sur votre machine ; peut-être aussi installer tout un tas de bibliothèques et de dépendances ; il fallait passer du temps à configurer votre machine avant même d'écrire votre premier script.
Tout ça, c'est fini avec l'arrivée de Docker et du concept de containers.
Cette fois, nous allons jouer avec Python. Je découvre Python en même temps que j'écris cet article : à cet instant précis, je n'ai jamais écrit de script .py.
Bienvenue dans le monde
Ouvrez un shell Linux et lancez mkdir -p /tmp/python && cd $_ pour créer un dossier appelé python dans votre dossier temporaire Linux et y entrer.
Créez un nouveau fichier appelé Hello.py avec ce contenu :
print("Hello World!")
Ce programme affiche simplement le message 'Hello World!' à l'écran en utilisant la fonction print().
Maintenant, comment exécuter ce script ? Comme je connais bien Docker, je sais que :
- il me faut une image Docker Python (https://hub.docker.com/_/python),
- je vais devoir utiliser une instruction
docker run, - je vais devoir partager mon script via un volume et
- je dois savoir comment lancer le script.
Et voilà, mon premier script Python est écrit. Souvenez-vous de l'ancien temps, avant Docker : combien d'heures et de lectures vous fallait-il pour exécuter votre premier script ? Ici, il ne m'a pas fallu cinq minutes pour être opérationnel.
Une fois le « Hello World » passé, deux articles vont plus loin : Docker - Python devcontainer pour un véritable environnement VSCode, et Python - Les outils de qualité de code pour garder vos scripts propres dès le premier jour.
Rappel sur la CLI Docker
Pour rappel, les commandes docker run utilisées sont (presque toujours les mêmes) :
-itpour démarrer Docker en mode interactif, ce qui permettra au script qui tourne dans le container de vous demander des saisies par exemple,--rmpour demander à Docker de tuer et supprimer le container dès que le script a été exécuté (sinon vous aurez un tas de containers Docker arrêtés mais non supprimés ; vous pouvez le vérifier en n'utilisant pas le flag--rmpuis en lançantdocker container listdans la console),-v ${PWD}:/apppour partager votre dossier courant avec un dossier appelé/appdans le container Docker,-w /apppour dire à Docker que le répertoire courant, dans le container, sera le dossier/app- ensuite
pythonqui est le nom de l'image Docker à utiliser (vous pouvez aussi préciser une version commepython:3.9.18si besoin ; voir https://hub.docker.com/_/python/tags) et, enfin, python Hello.pyc'est-à-dire la ligne de commande à lancer dans le container.
Jouer au pendu
Comme dit plus haut, en novembre 2023, je n'ai pas commencé à apprendre Python, alors essayons de trouver quelques scripts d'exemple. Sur https://hackr.io/blog/python-projects, on trouve un script de pendu.
Créez le fichier Hangman.py sur votre disque avec ce contenu :
import osimport randomimport time
def play_again(): question = "Do You want to play again? y = yes, n = no \n" play_game = input(question) while play_game.lower() not in ["y", "n"]: play_game = input(question)
if play_game.lower() == "y": return True else: return False
def hangman(word): display = "_" * len(word) count = 0 limit = 5 letters = list(word) guessed = [] while count < limit: guess = input(f"Hangman Word: {display} Enter your guess: \n").strip() while len(guess) == 0 or len(guess) > 1: print("Invalid input. Enter a single letter\n") guess = input(f"Hangman Word: {display} Enter your guess: \n").strip()
if guess in guessed: print("Oops! You already tried that guess, try again!\n") continue
if guess in letters: letters.remove(guess) index = word.find(guess) display = display[:index] + guess + display[index + 1 :]
else: guessed.append(guess) count += 1 if count == 1: time.sleep(1) print( " _____ \n" " | \n" " | \n" " | \n" " | \n" " | \n" " | \n" "__|__\n" ) print(f"Wrong guess: {limit - count} guesses remaining\n")
elif count == 2: time.sleep(1) print( " _____ \n" " | | \n" " | | \n" " | \n" " | \n" " | \n" " | \n" "__|__\n" ) print(f"Wrong guess: {limit - count} guesses remaining\n")
elif count == 3: time.sleep(1) print( " _____ \n" " | | \n" " | | \n" " | | \n" " | \n" " | \n" " | \n" "__|__\n" ) print(f"Wrong guess: {limit - count} guesses remaining\n")
elif count == 4: time.sleep(1) print( " _____ \n" " | | \n" " | | \n" " | | \n" " | O \n" " | \n" " | \n" "__|__\n" ) print(f"Wrong guess: {limit - count} guesses remaining\n")
elif count == 5: time.sleep(1) print( " _____ \n" " | | \n" " | | \n" " | | \n" " | O \n" " | /|\\ \n" " | / \\ \n" "__|__\n" ) print("Wrong guess. You've been hanged!!!\n") print(f"The word was: {word}")
if display == word: print(f"Congrats! You have guessed the word '{word}' correctly!") break
def play_hangman(): print("\nWelcome to Hangman\n") name = input("Enter your name: ") print(f"Hello {name}! Best of Luck!") time.sleep(1) print("The game is about to start!\nLet's play Hangman!") time.sleep(1) os.system("cls" if os.name == "nt" else "clear")
words_to_guess = [ "january", "border", "image", "film", "promise", "kids", "lungs", "doll", "rhyme", "damage", "plants", "hello", "world", ] play = True while play: word = random.choice(words_to_guess) hangman(word) play = play_again()
print("Thanks For Playing! We expect you back again!") exit()
if __name__ == "__main__": play_hangman()Ce script implémente un jeu du pendu complet. Le joueur doit deviner une lettre à la fois dans un mot caché, avec un maximum de 5 erreurs avant de perdre. Le jeu affiche progressivement un pendu ASCII à chaque mauvaise tentative et propose de rejouer après chaque partie.
Lancez-le ensuite avec docker run -it --rm -v ${PWD}:/app -w /app python python Hangman.py et bonne chance :
Hangman Word: ______ Enter your guess:
A
_____
|
|
|
|
|
|
__|__
Wrong guess: 4 guesses remaining
Hangman Word: ______ Enter your guess:
E
_____
| |
| |
|
|
|
|
__|__
Wrong guess: 3 guesses remaining
Hangman Word: ______ Enter your guess:
I
_____
| |
| |
| |
|
|
|
__|__
Wrong guess: 2 guesses remaining
Hangman Word: ______ Enter your guess:
C
_____
| |
| |
| |
| O
|
|
__|__
Wrong guess: 1 guesses remaining
Hangman Word: ______ Enter your guess:
O
_____
| |
| |
| |
| O
| /|\
| / \
__|__
Wrong guess. You've been hanged!!!
The word was: border
Do you want to play again? y = yes, n = no
Zut, j'ai perdu.
À vous de creuser... Vous trouverez un script qui teste la robustesse d'un mot de passe ; à vous de créer le script check_password.py et de le lancer sur votre machine.
Si Docker lui-même est nouveau pour vous, commencez par Docker - Explain me like I'm five. Et puisque tout l'intérêt est que cette approche fonctionne avec n'importe quel langage, j'ai fait la même expérience avec Pascal, Assembly et Java.





