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

64

Mit der Basis ubuntu:12.04, ifconfigist nicht verfügbar in den Behältern, wenn der ipBefehl verfügbar ist, warum das so ist? und wie kommt man ifconfigin den behälter

Pellaeon
quelle
Mir ist bewusst, dass ifconfigdas irgendwie veraltet ist, aber einige Programme hängen immer noch davon ab.
Pellaeon
3
Sind die Entwickler noch am Leben? Dies war vor Jahren veraltet.
Michael Hampton
Es gibt einen Fehler bei der Verwendung ipin der aktuellen Version der Software. Ich brauche eine schnelle Umgehung des Problems.
Pellaeon
1
"Einige Programme" und "Es gibt Fehler": Können Sie genauer sein?
Mark Wagner

Antworten:

95

Sie können ifconfig mit installieren apt-get install net-tools. (Insbesondere durch Hinzufügen RUN apt-get install -y net-toolszu Ihrer Docker-Datei.)

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

Randall Smith
quelle
6
Ich frage mich immer noch, warum es nicht standardmäßig enthalten ist, aber ich nehme an, der Punkt dieses Containers ist, dass es so minimal ist, wie es nur sein kann und immer noch funktioniert.
Iguananaut
5
Ein weiteres Addendum: Auf einer neuen Instanz des Ubuntu-Containers werden die Paketlisten ebenfalls nicht gefüllt. Sie müssen also ausgeführt werden, sudo apt-get updatewenn Sie dies noch nicht getan haben.
Iguananaut
1
ifconfigist nicht enthalten in ubuntu:16:04.
JamesThomasMoon1979
11
Antwort von @Iguananaut: Eine Ubuntu-VM hat mehr als 500 MB, während ein Ubuntu-Docker-Image weniger als 100 MB hat. Jungs, die Container-Images erstellen, müssen eine Linie zeichnen, welche Pakete / Binärdateien enthalten sein sollen und welche nicht, um nur die Grundbedürfnisse im Inneren zu behalten. Sie wissen, all dies ist sinnvoller, wenn Sie Container als Prozesse und nicht als "isolierte Computerumgebung zum Spielen" betrachten
Rushi Agrawal
13

Sofern 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 vom Docker selbst verfügbar ist:

docker inspect <container_name or container_id>

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

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

Devendra Bhat
quelle
4

Ich bin auch auf dieses Ärgernis gestoßen, aber wie Devendra in Docker Inspect schrieb , kann man alle Details über den Container ohne nachlesennet-tools . In meinem Fall brauchte ich die IP des Containers. Um die IP zu extrahieren, können Sie Folgendes 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 Sie eine noch kürzere Notation, um die IP des Containers zu erhalten (siehe Docker-Inspektionsbeispiele ):

docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container-id-or-name>
Befolgte
quelle
Dies funktioniert jedoch nicht im Container, wie vom OP angefordert.
Gerald Schneider
Du hast recht. Scheine nur ein nützlicher Tipp zu sein, und ich dachte, dass OP höchstwahrscheinlich auch nach der IP des Containers suchen würde.
Gehorcht