web-dev-qa-db-fra.com

Docker - Ubuntu - bash: ping: commande non trouvée

J'ai un conteneur Docker sous Ubuntu que j'ai réalisé comme suit:

docker run -it ubuntu /bin/bash

cependant, il ne semble pas avoir ping. Par exemple.

bash: ping: command not found

Dois-je installer ça?

Semble une commande assez basique pour être manquant. J'ai essayé whereis ping qui ne rapporte rien.

167
Snowcrash

Les images Docker sont plutôt minimes, mais vous pouvez installer ping dans votre image officielle du docker ubuntu via:

apt-get update
apt-get install iputils-ping

Il est fort probable que vous n’avez pas besoin de ping votre image et que vous souhaitiez simplement l’utiliser à des fins de test. L'exemple ci-dessus vous aidera.

Mais si vous avez besoin que ping existe sur votre image, vous pouvez créer un conteneur Dockerfile ou commit dans lequel vous avez exécuté les commandes ci-dessus sur une nouvelle image.

Commettre:

docker commit -m "Installed iputils-ping" --author "Your Name <[email protected]>" ContainerNameOrId yourrepository/imagename:tag

Dockerfile:

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

Veuillez noter qu'il existe des meilleures pratiques pour la création d'images de menu fixe, comme effacer les fichiers de cache d'apt après et etc.

362
Farhad Farahi

This est la page de Docker Hub pour Ubuntu et cela est le mode de création. Il ne dispose que de (quelque) peu de paquets minimum, donc si vous avez besoin de quelque chose de plus, vous devez l’installer vous-même.

apt-get update && apt-get install -y iputils-ping

Cependant, vous créez généralement un "Dockerfile" et le construisez:

mkdir ubuntu_with_ping
cat >ubuntu_with_ping/Dockerfile <<'EOF'
FROM ubuntu
RUN apt-get update && apt-get install -y iputils-ping
CMD bash
EOF
docker build -t ubuntu_with_ping ubuntu_with_ping
docker run -it ubuntu_with_ping

Veuillez utiliser Google pour rechercher des didacticiels et parcourir les fichiers Docker existants pour voir comment ils font habituellement. Par exemple, la taille de l'image doit être réduite au minimum en exécutant apt-get clean && rm -rf /var/lib/apt/lists/* après les commandes apt-get install.

19
NikoNyrh

Vous pouvez également utiliser une image Docker sur laquelle un ping est déjà installé, par exemple. busybox :

docker run --rm busybox ping SERVER_NAME -c 2
2
Ivan

Généralement, les gens tirent l'image officielle d'Ubuntu/CentOS mais ne réalisent pas que ces images sont minimes et n'ont rien de plus en plus.

Pour Ubuntu, cette image est construite à partir des archives officielles de rootfs fournies par Canonical. Étant donné qu'il s'agit d'une installation minimale d'Ubuntu, cette image n'inclut que les paramètres régionaux C, C.UTF-8 et POSIX par défaut.

On peut installer net-tools (ifconfig, netstat inclus), ip-utils (ping inclus) et autres, comme curl, etc. sur un conteneur et créer une image à partir d'un conteneur ou écrire Dockerfile pour installer ces outils lors de la création d'image.

Voici l'exemple de Dockerfile. Lors de la création d'une image, il inclura les outils suivants:

FROM vkitpro/ubuntu16.04
RUN     apt-get  update -y \
&& apt-get upgrade -y \
&& apt-get install iputils-ping -y \
&& apt-get install net-tools -y \
CMD bash

ou lancez le conteneur à partir de l'image de base et installez ces utilitaires sur le conteneur, puis validez avec l'image . docker commit -m "n'importe quel message descriptif" id_ conteneur ID_image: lattest

Cette image aura tout installé.

1
Vaseem007

Chaque fois que vous obtenez ce genre d'erreur

bash: <command>: command not found
  • Sur un hôte avec cette commande fonctionnant déjà avec cette solution :

    dpkg -S $(which <command>)
    
  • Vous n'avez pas un hôte avec ce paquet installé? Essaye ça :

    apt-file search /bin/<command>
    
0
Pablo Bianchi