Pourquoi ifconfig n'est-il pas disponible dans le conteneur Ubuntu Docker?

64

Avec la base ubuntu:12.04, ifconfign'est pas disponible dans le conteneur, bien que la ipcommande soit disponible, pourquoi? et comment entrer ifconfigdans le conteneur?

Pellaeon
la source
Je suis conscient que ifconfigc'est en quelque sorte obsolète, mais certains programmes en dépendent toujours.
Pellaeon
3
Les développeurs sont-ils toujours en vie? C'était obsolète il y a des années.
Michael Hampton
Il y a un bug lors de l'utilisation ipde la version actuelle du logiciel. J'ai besoin d'une solution rapide au problème.
Pellaeon
1
"Certains programmes" et "il y a un bug": pouvez-vous être plus précis?
Mark Wagner

Réponses:

95

Vous pouvez installer ifconfig avec apt-get install net-tools. (Plus précisément, en ajoutant RUN apt-get install -y net-toolsà votre fichier Docker.)

D'après mon test, ifconfig est inclus dans Ubuntu: 14.04.

Randall Smith
la source
6
Je me demande toujours pourquoi il n'est pas inclus par défaut, mais je suppose que le but de ce conteneur est qu'il est aussi minime que possible et qu'il fonctionne toujours.
Iguananaut
5
Un autre addenda - sur une nouvelle instance du conteneur Ubuntu, les listes de paquetages ne sont pas non plus renseignées. Vous devez donc exécuter sudo apt-get updatesi vous ne l'avez pas déjà fait.
Iguananaut
1
ifconfign'est pas inclus dans ubuntu:16:04.
JamesThomasMoon1979
11
Pour répondre à @Iguananaut: une machine virtuelle Ubuntu fait plus de 500 Mo, alors qu'une image Ubuntu Docker fait moins de 100 Mo. Les gars qui créent des conteneurs d'images doivent tracer une ligne indiquant quels paquets / binaires doivent être inclus ou non, afin de ne conserver que les éléments de base. Vous savez, tout cela a plus de sens si vous considérez les conteneurs comme un processus et non comme un "environnement informatique isolé pour jouer à l'intérieur et à propos de celui-ci"
Rushi Agrawal
13

Sauf si et jusqu'à ce que vous puissiez installer net-tools, il n'est pas nécessaire de le donner par défaut. Aussi, si vous voulez voir l'adresse IP, il y a une autre commande disponible par le menu fixe lui-même: -

docker inspect <container_name or container_id>

Syntaxe de docker inspect :docker inspect [OPTIONS] NAME|ID [NAME|ID...]

Cette cmd vous montrera tous les détails du conteneur en cours d'exécution, y compris l'adresse IP.

Devendra Bhat
la source
4

Je suis également tombé sur cette nuisance, mais comme l’a écrit Devendra dans docker inspect, vous pouvez obtenir tous les détails sur le conteneur net-tools. Dans mon cas, j'avais besoin de l'adresse IP du conteneur. Pour extraire l'adresse IP, vous pouvez utiliser:

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\}'

EDIT une notation encore plus courte pour obtenir l’adresse IP du conteneur (voir Exemples d’inspection de docker ):

docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container-id-or-name>
Obéi
la source
Cela ne fonctionnera cependant pas à l'intérieur du conteneur, comme l'OP l'a demandé.
Gerald Schneider
Vous avez raison. Cela semble être une astuce utile, et j’ai pensé que l’OP cherchait probablement aussi à trouver l’adresse IP du conteneur.
Obéi le