Frage Warum ist ifconfig nicht im Ubuntu Docker Container verfügbar?


Mit der Basis ubuntu:12.04, ifconfig ist im Container nicht verfügbar, obwohl der ip Befehl ist verfügbar, warum ist das? und wie man kommt ifconfig im Behälter?


48
2017-07-18 04:12


Ursprung


Sehen Linux Networking - "ip X" statt ifconfig / route / etc? und Soll ich Ifconfig beenden? - Michael Hampton♦
Mir ist bewusst, dass ifconfig ist irgendwie veraltet, aber einige Programme hängen noch davon ab. - Pellaeon
Sind die Entwickler noch am Leben? Das war vor Jahren veraltet. - Michael Hampton♦
Es gibt einen Fehler bei der Verwendung ip in der aktuellen Version der Software. Ich brauche eine schnelle Abhilfe des Problems. - Pellaeon
"Einige Programme" und "Es gibt Fehler": Können Sie genauer sein? - Mark Wagner


Antworten:


Sie können ifconfig mit installieren apt-get install net-tools. (Insbesondere durch Hinzufügen von RUN apt-get install -y net-tools zu deiner Dockerfile.)

Basierend auf meinem Test ist ifconfig in ubuntu enthalten: 14.04.


79
2017-07-23 20:40



Ich frage mich immer noch, warum es nicht standardmäßig enthalten ist, aber ich nehme an, der Sinn dieses Containers ist, dass er so minimal wie möglich ist und immer noch funktioniert. - Iguananaut
Ein weiteres Addendum - bei einer neuen Instanz des Ubuntu-Containers sind die Paketlisten ebenfalls nicht gefüllt, also müssen Sie laufen sudo apt-get update wenn du es nicht schon getan hast. - Iguananaut
ifconfig ist nicht enthalten in ubuntu:16:04. - JamesThomasMoon1979
Um @Iguananaut zu beantworten: Eine Ubuntu-VM ist 500+ MB groß, während ein Ubuntu-Docker-Image weniger als 100 MB groß ist. Leute, die Containerbilder erstellen, müssen eine Linie ziehen, welche Pakete / Binärdateien enthalten sein sollten und was nicht, um nur die grundlegenden Notwendigkeiten im Inneren zu behalten. Sie wissen, all dies macht mehr Sinn, wenn Sie Container als Prozesse betrachten und nicht als eine isolierte Computerumgebung, in der man herumspielen kann. - Rushi Agrawal


Solange und bis Sie net-tools installieren können, müssen Sie es nicht standardmäßig angeben. Auch wenn Sie die IP-Adresse sehen möchten, gibt es einen anderen Befehl, der von Docker selbst verfügbar ist:

docker inspect <container_name or container_id>

Docker inspizieren Syntax: docker inspect [OPTIONS] NAME|ID [NAME|ID...]

Dieser Cmd zeigt Ihnen jedes Detail des laufenden Containers einschließlich der IP-Adresse.


7
2017-09-18 22:14





Ich bin auch auf dieses Ärgernis gestoßen, aber wie Devendra schrieb Docker inspizieren Sie können alle Details über den Container ohne erhalten net-tools. In meinem Fall brauchte ich die IP des Containers. Um die IP zu extrahieren, können Sie verwenden:

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

BEARBEITEN noch kürzere Notation, um die IP des Containers zu erhalten (vgl docker inspect Beispiele):

docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container-id-or-name>

2
2018-06-22 07:14



Dies wird jedoch nicht innerhalb des Containers funktionieren, wie das OP angefordert hat. - Gerald Schneider
Du hast recht. Es scheint nur ein nützlicher Tipp zu sein, und ich dachte, dass OP wahrscheinlich auch die IP des Containers finden würde. - Obeyed