Docker sur Ubuntu : résoudre l'erreur bash: ping: command not found

Le logiciel Docker permet de créer des conteneurs dans lesquels on peut exécuter des logiciels ou des systèmes d'exploitation. Il est utilisé pour créer des environnements spécifiques afin d'exécuter des logiciels ou bien effectuer des tests.

Pour installer les systèmes d'exploitation, Docker fournit des images conçues dans ce but. Avec l'image d'Ubuntu, vous obtiendrez le message d'erreur suivant en utilisant la commande "ping" : "bash: ping: command not found". Les images de système d'exploitation fonctionnant avec Docker sont minimales, elles ne contiennent pas toutes les fonctions présentes habituellement. Il est cependant facile d'installer la commande "ping" sur son image d'Ubuntu. Il faut pour cela mettre à jour le gestionnaire de paquets "apt-get" puis installer la commande.

apt-get update
apt-get install iputils-ping

Le fait d'installer la commande ne sauvegardera pas son exécution lors du prochain démarrage de l'image. Si vous souhaitez que la commande reste présente lors de votre prochaine session, vous pouvez utiliser la commande "commit" de Docker. Elle permet de sauvegarder les changements effectués sur une image en indiquant un message, un auteur. Il faut également le nom ou l'identifiant du container et le chemin vers le fichier de l'image.

docker commit -m "Installation de la commande ping" --author "Votre nom <votrecourriel@votredomaine.fr>" nomOuIdentifiantDuContainer votreDepot/nomDeLimage:tag

Une autre solution consiste à créer un "dockerfile". Il s'agit d'un fichier contenant toutes les étapes pour créer une image adaptée à vos besoins. La directive "FROM" indique quel système d'exploitation sera installé dans l'image. Avec la directive "RUN", on indique une commande à exécuter dans le shell. C'est ici que l'on va écrire les commandes permettant d'installer la commande "ping". Pour finir, la directive "CMD" ajoute une commande lancée au démarrage de l'image. On va ici saisir "bash" pour qu'un terminal s'ouvre dès que l'image est lancée afin que l'on puisse directement utiliser la commande "ping".

FROM ubuntu
RUN apt-get update && apt-get install -y iputils-ping
CMD bash

On dispose maintenant d'un fichier permettant de recréer l'image sur n'importe quelle machine équipée de Docker.