¿Cómo instalar el comando "ifconfig" en mi imagen de ubuntu docker?


84

Acabo de instalar ubuntu docker image, cuando ejecuto "ifconfig" dice que no existe tal comando, intenté apt-get install porque no hay un paquete llamado "ifconfig" (puedo instalar algunas otras imágenes).

Entonces, ¿cómo hacer esto? Gracias.


3
serverfault.com/a/614972 - dentro de su DockerfileRUN apt-get install -y net-tools
Brian

1
iproute2 es el conjunto de herramientas de red de Linux que reemplazó a las herramientas de red (ifconfig, route, arp, etc.); consulte baturin.org/docs/iproute2 y también lwn.net/Articles/710533
Scott Stensland

¿Puedo hacer preguntas sobre la instalación en SO? Las preguntas sobre las herramientas de software comúnmente utilizadas por los programadores deben ser un problema práctico y de respuesta exclusivo del desarrollo de software.
Trenton McKinney

Respuestas:


178

En una nueva imagen de ubuntu docker, ejecute

apt-get update
apt-get install net-tools

Estos se pueden ejecutar iniciando sesión en el contenedor de la ventana acoplable o agregar esto a su archivo de ventana acoplable para crear una imagen con el mismo.


7
net-tools ahora está obsoleto ... su reemplazo: iproute2 es el kit de herramientas de red de Linux que reemplazó a net-tools (ifconfig, route, arp, etc.) ver baturin.org/docs/iproute2 y también ver lwn.net/Articles/710533
Scott Stensland

11

También podría considerar:

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

(como comenta Contango : primero debe ejecutar , para evitar errores con el repositorio faltante).apt-get update

Consulte " Reemplazo de ifconfig con ip "

con mayor frecuencia se recomienda seguir adelante con el comando que ha reemplazado ifconfig. Ese comando lo es ip, y hace un gran trabajo al intervenir para lo desactualizado ifconfig.

Pero como se ve en " Obtener la dirección IP de un contenedor Docker desde el host ", el uso docker inspectpuede ser más útil según su caso de uso.


1
Primero debe ejecutarse apt-get update(para evitar errores con el repositorio faltante).
Contango

1
@Contango Gracias. He incluido su comentario en la respuesta para mayor visibilidad.
VonC

RUN apt-get update && apt-get install -y iputils-pingno ip-utils-ping al menos así es como funciona para mí.
Chase

@Chase Gracias. He editado la respuesta en consecuencia.
VonC

2

Utilice el siguiente comando para obtener la dirección IP del contenedor en ejecución.

$ ip addr

Ejemplo-:

root@4c712d05922b:/# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
247: eth0@if248: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:42:ac:11:00:06 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.17.0.6/16 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:acff:fe11:6/64 scope link
       valid_lft forever preferred_lft forever

No funciona en la imagen de la ventana acoplable de Ubuntu 747cb2d60bbe. ifconfigtampoco está funcionando.
shimatai

2

Desde dentro de un Dockerfile, algo como lo siguiente debería funcionar:

RUN apt-get update && \
     apt-get install -y net-tools

Desde la memoria, es una buena práctica combinar la actualización y las líneas de instalación del paquete para evitar que la ventana acoplable almacene en caché el paso de actualización, lo que puede resultar en la instalación de paquetes obsoletos.

Instalarlo a través de la CLI o un script de shell:

apt-get update && apt-get install net-tools


2

Vine aquí porque estaba tratando de usar ifconfig en el contenedor para encontrar su dirección IPA y no había ifconfig. Si realmente necesita ifconfig en el contenedor, vaya con la respuesta de @ vishnu-narayanan anterior, sin embargo, es posible que pueda obtener la información que necesita utilizando docker inspect en el host:

docker inspect <containerid>

Hay muchas cosas buenas en la salida, incluida la dirección IP del contenedor:

"Networks": {
    "bridge": {
        "IPAMConfig": null,
        "Links": null,
        "Aliases": null,
        "NetworkID": "12345FAKEID",
        "EndpointID": "12345FAKEENDPOINTID",
        "Gateway": "172.17.0.1",
        "IPAddress": "172.17.0.3",
        "IPPrefixLen": 16,
        "IPv6Gateway": "",
        "GlobalIPv6Address": "",
        "GlobalIPv6PrefixLen": 0,
        "MacAddress": "01:02:03:04:05:06",
        "DriverOpts": null
    }
}

1

En caso de que desee utilizar la imagen de Docker como una instalación "normal" de Ubuntu, también puede ejecutar unminimize. Esto instalará mucho más ifconfig, por lo que es posible que esto no sea lo que desea.



0

Si la imagen de Ubuntu Docker no reconoce 'ifconfig' dentro de GNS3, necesitará abrir la imagen de Ubuntu Docker en su host.

Suponiendo que ya tiene Docker en su PC host y ubuntu extraído de las imágenes de Docker. Ingrese estos comandos en la CLI de su sistema operativo host (Linux, CentOS, etc.).

$docker images

$docker run -it ubuntu

$apt-get update

$apt-get install net-tools

(nota al margen: puede agregar cualquier otra herramienta y servicio que le gustaría agregar ahora, pero por ahora esto es solo para que ifconfig funcione).

$exit

Ahora enviará estos cambios a Docker. Este enlace para confirmar cambios es el mejor resumen y funciona (salte al paso 4):

https://phoenixnap.com/kb/how-to-commit-changes-to-docker-image#htoc-step-3-modify-the-container

Cuando vuelva a abrir la imagen de la ventana acoplable en GNS3, ahora debería tener el comando ifconfig utilizable y cualquier otra herramienta o servicio que haya agregado al contenedor.

¡Disfrutar!


-1

sudo apt-get install iproute2 luego ejecute ip addr show

funciona..


2
Hola, bienvenido a Stack Overflow. Como esta es una pregunta antigua con una respuesta aceptada extremadamente popular, edite su respuesta para explicar qué proporciona que las respuestas existentes no. Gracias.
MandyShaw
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.