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.
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.
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
.
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
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é.
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>