Tengo un contenedor Docker que ejecuta Ubuntu, que hice de la siguiente manera:
docker run -it ubuntu /bin/bash
Sin embargo, no parece tener ping
. P.ej
bash: ping: command not found
¿Necesito instalar eso?
Parece que falta un comando bastante básico. Intenté whereis ping
lo que no informa nada.
Respuestas:
Las imágenes de Docker son bastante mínimas, pero puedes instalarlas
ping
en tu imagen oficial de Docker de ubuntu a través de:Es probable que no necesite
ping
su imagen y solo quiera usarla para fines de prueba. El ejemplo anterior te ayudará.Pero si necesita que exista ping en su imagen, puede crear uno
Dockerfile
ocommit
el contenedor en el que ejecutó los comandos anteriores en una nueva imagen.Cometer:
Dockerfile:
Tenga en cuenta que existen prácticas recomendadas para crear imágenes acoplables, como borrar archivos de caché de apt después, etc.
fuente
Temporary failure resolving 'security.ubuntu.com'
obviamente porque la red no está presente.Esta es la página de Docker Hub para Ubuntu y así es como se crea. Solo tiene (mínimo) paquetes mínimos instalados, por lo tanto, si necesita algo adicional, debe instalarlo usted mismo.
Sin embargo, generalmente crearía un "Dockerfile" y lo crearía:
Por favor, utilizar Google para encontrar tutoriales y Dockerfiles Buscar existentes para ver cómo se suelen hacer cosas :) Por ejemplo, tamaño de la imagen debe reducirse al mínimo mediante la ejecución
apt-get clean && rm -rf /var/lib/apt/lists/*
después deapt-get install
comandos.fuente
echo -e
en realidad desafía el estándar POSIX sh , que no le permite hacer nada más que imprimir-e
en su salida. (Incluso con algunas versiones de bash, ese es el comportamiento predeterminado). Use en suprintf
lugar:printf '%s\n' "FROM ubuntu" "RUN apt-get update && apt-get install -y iputils-ping" "CMD bash"
y vea la sección USO DE APLICACIONES del documento de estándares vinculado anteriormente.echo -e
la forma en que lo espera (sino que tendrá un comportamiento compatible con los estándares) cuando se compile con el modo POSIX--enable-xpg-echo-default
o con las variables de entorno apropiadas u otra configuración de tiempo de ejecución.-n
como primer argumento, o cuando hay literales de barra invertida, pero aun así, está definido por la implementación , no está garantizado por el estándar, por lo que el comportamiento depende del shell individual en uso).En general, las personas obtienen la imagen oficial de Ubuntu / CentOS, pero no se dan cuenta de que estas imágenes son mínimas y no tienen nada más.
Para Ubuntu, esta imagen está construida a partir de tarballs rootfs oficiales proporcionados por Canonical. Dado que es una instalación mínima de Ubuntu, esta imagen solo incluye las configuraciones regionales C, C.UTF-8 y POSIX de forma predeterminada.
Uno puede instalar net-tools (incluye ifconfig, netstat), ip-utils (incluye ping) y otros me gusta curl, etc. en el contenedor y puede crear una imagen desde el contenedor o puede escribir Dockerfile que instalará estas herramientas mientras crea la imagen.
A continuación se muestra el ejemplo de Dockerfile, al crear una imagen a partir de esto, incluirá estas herramientas:
o inicie el contenedor desde la imagen base e instale estas utilidades en el contenedor y luego confirme la imagen. docker commit -m "cualquier mensaje descriptivo" id_contenedor nombre_imagen: lattest
Esa imagen tendrá todo instalado.
fuente
Alternativamente, puede usar una imagen Docker que ya tiene ping instalado, por ejemplo busybox :
fuente
apt-get iputils-ping
la imagen que lo necesita.Cada vez que tienes este tipo de error
En un host con ese comando que ya funciona con esta solución :
¿No tienes un host con ese paquete instalado? Intenta esto :
fuente
A veces, la instalación mínima de Linux en Docker no define la ruta y, por lo tanto, es necesario llamar al ping usando ...
fuente
He usado la siguiente declaración en Debian 10
fuente