¿Por qué no está ifconfig disponible en el contenedor Ubuntu Docker?

64

Con la base ubuntu:12.04, ifconfigno está disponible en el contenedor, aunque el ipcomando está disponible, ¿por qué es esto? y, como entrar ifconfigen el contenedor?

Pellaeon
fuente
Soy consciente de que de ifconfigalguna manera está en desuso, pero algunos programas aún dependen de ello.
Pellaeon
3
¿Los desarrolladores siguen vivos? Esto fue en desuso hace años.
Michael Hampton
Hay un error cuando se usa ipen la versión actual del software. Necesito una solución rápida del problema.
Pellaeon
1
"Algunos programas" y "hay error": ¿puedes ser más específico?
Mark Wagner

Respuestas:

95

Puede instalar ifconfig con apt-get install net-tools. (Específicamente, agregando RUN apt-get install -y net-toolsa su Dockerfile).

Según mi prueba, ifconfig está incluido en ubuntu: 14.04.

Randall Smith
fuente
66
Todavía me hace preguntarme por qué no está incluido de manera predeterminada, pero supongo que el objetivo de este contenedor es que es lo más mínimo posible y aún funciona.
Iguananaut
55
Otro apéndice: en una nueva instancia del contenedor de Ubuntu, las listas de paquetes tampoco se rellenan, por lo que debe ejecutar sudo apt-get updatesi aún no lo ha hecho.
Iguananaut
1
ifconfigno está incluido en ubuntu:16:04.
JamesThomasMoon1979
11
Para responder a @Iguananaut: una máquina virtual de Ubuntu tiene más de 500 MB, mientras que una imagen de Ubuntu Docker tiene menos de 100 MB. Los chicos que crean imágenes de contenedores deben trazar una línea sobre qué paquetes / binarios deben incluirse y qué no, para mantener solo las necesidades básicas dentro. Sabes, todo esto tiene más sentido si piensas que los contenedores son procesos y no como un 'entorno informático aislado para jugar por dentro y por fuera'
Rushi Agrawal
13

A menos que y hasta que pueda instalar herramientas de red, no hay necesidad de proporcionarlo de forma predeterminada. Además, si desea ver la dirección IP, hay otro comando disponible por la propia ventana acoplable:

docker inspect <container_name or container_id>

la ventana acoplable inspecciona la sintaxis:docker inspect [OPTIONS] NAME|ID [NAME|ID...]

Este cmd le mostrará todos los detalles del contenedor en ejecución, incluida la dirección IP.

Devendra Bhat
fuente
4

También me topé con esta molestia, pero como Devendra escribió en la ventana de inspección , puede obtener todos los detalles sobre el contenedor sin él net-tools. En mi caso, necesitaba la IP del contenedor. Para extraer la IP puedes usar:

docker inspect <container-id> \
  | grep "\"IPAddress\"" -m 1 \
  | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'

EDITE una notación aún más corta para obtener la IP del contenedor (consulte los ejemplos de inspección de la ventana acoplable ):

docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container-id-or-name>
Obedecido
fuente
Sin embargo, esto no funcionará dentro del contenedor, como solicitó el OP.
Gerald Schneider
Tienes razón. Simplemente parece un consejo útil, y pensé que OP también estaba buscando encontrar la IP del contenedor.
Obedeció el