J'ai un conteneur Docker exécutant Ubuntu que j'ai fait comme suit:
docker run -it ubuntu /bin/bash
mais cela ne semble pas l'avoir fait ping
. Par exemple
bash: ping: command not found
Dois-je l'installer?
Semble une commande assez basique manquante. J'ai essayé whereis ping
ce qui ne rapporte rien.
Réponses:
Les images Docker sont assez minimes, mais vous pouvez installer
ping
dans votre image Docker Ubuntu officielle via:Il est fort probable que vous n'ayez 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 de ping pour exister sur votre image, vous pouvez créer un
Dockerfile
oucommit
le conteneur dans lequel vous avez exécuté les commandes ci-dessus dans une nouvelle image.Commettre:
Dockerfile:
Veuillez noter qu'il existe des meilleures pratiques pour la création d'images de docker, comme la suppression des fichiers de cache apt après et etc.
la source
Temporary failure resolving 'security.ubuntu.com'
évidemment parce que le réseau n'est pas présent.C'est la page Hub Docker pour Ubuntu et c'est la façon dont il est créé. Il n'a que des packages minimums (quelque peu) installés, donc si vous avez besoin de quelque chose de plus, vous devez l'installer vous-même.
Cependant, vous créez généralement un "Dockerfile" et le créez:
Veuillez utiliser Google pour trouver des didacticiels et parcourir les Dockerfiles existants pour voir comment ils font habituellement les choses :) Par exemple, la taille de l'image doit être minimisée en exécutant
apt-get clean && rm -rf /var/lib/apt/lists/*
après lesapt-get install
commandes.la source
echo -e
défie en fait la norme POSIX sh , qui ne lui permet pas de faire autre chose que d'imprimer-e
sur sa sortie. (Même avec certaines versions de bash, c'est le comportement par défaut). Utilisezprintf
plutôt:printf '%s\n' "FROM ubuntu" "RUN apt-get update && apt-get install -y iputils-ping" "CMD bash"
et consultez la section UTILISATION DE L'APPLICATION du document de normes lié ci-dessus.echo -e
la façon dont vous vous y attendez (mais aura plutôt un comportement conforme aux normes) en mode POSIX compilé avec--enable-xpg-echo-default
, ou avec des variables d'environnement appropriées ou une autre configuration d'exécution.-n
tant que premier argument, ou lorsque des littéraux de barre oblique inversée sont présents - mais même dans ce cas, il est défini par l' implémentation , non garanti standard, donc le comportement dépend du shell individuel utilisé).En général, les gens tirent l'image officielle d'Ubuntu / CentOS, mais ils ne réalisent pas que ces images sont minimes et n'ont rien de plus.
Pour Ubuntu, cette image est construite à partir des tarballs rootfs officiels fournis par Canonical. Étant donné qu'il s'agit d'une installation minimale d'Ubuntu, cette image inclut uniquement les paramètres régionaux C, C.UTF-8 et POSIX par défaut.
On peut installer des net-tools (inclut ifconfig, netstat), ip-utils (inclut ping) et d'autres comme curl, etc. sur le conteneur et peut créer une image à partir du conteneur ou peut écrire Dockerfile qui installera ces outils lors de la création de l'image.
Voici l'exemple de Dockerfile, lors de la création d'une image à partir de cela, il inclura ces outils:
ou lancez le conteneur à partir de l'image de base et installez ces utilitaires sur le conteneur, puis validez sur l'image. docker commit -m "any descriptive message" container_id image_name: lattest
Cette image aura tout installé.
la source
Alternativement, vous pouvez utiliser une image Docker sur laquelle ping est déjà installé, par exemple busybox :
la source
apt-get iputils-ping
sur l'image qui en a besoin.Chaque fois que vous obtenez ce genre d'erreur
Sur un hôte avec cette commande travaillant déjà avec cette solution :
Vous n'avez pas d'hôte avec ce package installé? Essayez ceci :
la source
Parfois, l'installation minimale de Linux dans Docker ne définit pas le chemin d'accès et il est donc nécessaire d'appeler ping en utilisant ....
la source
J'ai utilisé la déclaration ci-dessous sur Debian 10
la source