Wie installiere ich den Befehl "ifconfig" in meinem Ubuntu-Docker-Image?


86

Ich habe gerade das Ubuntu Docker-Image installiert. Wenn ich "ifconfig" ausführe, heißt es, dass es keinen solchen Befehl gibt. Ich habe versucht, apt-get zu installieren, da es kein Paket mit dem Namen "ifconfig" gibt (ich kann einige andere Images installieren).

Wie geht das? Vielen Dank.


4
serverfault.com/a/614972 - in Ihrer Docker-DateiRUN apt-get install -y net-tools
Brian

1
iproute2 ist das Linux-Netzwerk-Toolkit, das Net-Tools (ifconfig, route, arp usw.) ersetzt hat. Siehe baturin.org/docs/iproute2 und siehe auch lwn.net/Articles/710533
Scott Stensland,

Kann ich Fragen zur Installation in SO stellen? Fragen zu Softwaretools, die häufig von Programmierern verwendet werden, müssen ein praktisches, beantwortbares Problem sein, das nur bei der Softwareentwicklung auftritt.
Trenton McKinney

Antworten:


180

Führen Sie auf einem neuen Ubuntu-Docker-Image aus

apt-get update
apt-get install net-tools

Diese können ausgeführt werden, indem Sie sich beim Docker-Container anmelden oder diese zu Ihrer Docker-Datei hinzufügen, um ein Image mit derselben zu erstellen.


7
net-tools ist mittlerweile veraltet ... sein Ersatz: iproute2 ist das Linux-Netzwerk-Toolkit, das net-tools (ifconfig, route, arp usw.) ersetzt hat. Siehe baturin.org/docs/iproute2 und siehe auch lwn.net/Articles/710533
Scott Stensland

12

Sie könnten auch berücksichtigen:

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

(wie Contango kommentiert : Sie müssen zuerst ausführen apt-get update, um Fehler mit fehlendem Repository zu vermeiden).

Siehe " ifconfig durch ip ersetzen "

Am häufigsten wird empfohlen, mit dem ersetzten Befehl fortzufahren ifconfig . Dieser Befehl ist ip, und er macht einen großartigen Job, wenn es darum geht , veraltet zu sein ifconfig.

Wie unter " Abrufen der IP-Adresse eines Docker-Containers vom Host " zu sehen ist, docker inspectkann die Verwendung je nach Anwendungsfall nützlicher sein.


1
Muss zuerst ausgeführt werden apt-get update(um Fehler mit fehlendem Repository zu vermeiden).
Contango

1
@ Contango Danke. Ich habe Ihren Kommentar zur besseren Sichtbarkeit in die Antwort aufgenommen.
VonC

RUN apt-get update && apt-get install -y iputils-pingnicht ip-utils-ping zumindest das ist , wie es funktioniert für mich.
Chase

@Chase Danke. Ich habe die Antwort entsprechend bearbeitet.
VonC

2

Verwenden Sie den folgenden Befehl, um die IP-Adresse des laufenden Containers abzurufen.

$ ip addr

Beispiel-:

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

Es funktioniert nicht in Ubuntu Docker Image 747cb2d60bbe. ifconfiges funktioniert auch nicht.
Shimatai

2

Innerhalb einer Docker-Datei sollte etwas wie das Folgende den Trick tun:

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

Aus dem Speicher wird empfohlen, das Update und die Paketinstallationszeilen zu kombinieren, um zu verhindern, dass Docker den Update-Schritt zwischenspeichert, was dazu führen kann, dass veraltete Pakete installiert werden.

Installation über die CLI oder ein Shell-Skript:

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


2

Ich bin hierher gekommen, weil ich versucht habe, ifconfig für den Container zu verwenden, um seine IPA-Adresse zu finden, und es gab keine ifconfig. Wenn Sie ifconfig für den Container wirklich benötigen, klicken Sie oben auf @ vishnu-narayanan. Möglicherweise können Sie jedoch die benötigten Informationen mithilfe von Docker Inspect auf dem Host abrufen:

docker inspect <containerid>

Es gibt viele gute Dinge in der Ausgabe, einschließlich IPAddress des Containers:

"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

Wenn Sie das Docker-Image als "normale" Ubuntu-Installation verwenden möchten, können Sie es auch ausführen unminimize. Dies wird viel mehr als installieren ifconfig, so dass dies möglicherweise nicht das ist, was Sie wollen.



0

Wenn das Ubuntu Docker-Image "ifconfig" in GNS3 nicht erkennt, müssen Sie das Ubuntu Docker-Image auf Ihrem Host öffnen.

Angenommen, Sie haben bereits Docker auf Ihrem Host-PC und Ubuntu aus Docker-Bildern. Geben Sie diese Befehle in die CLI Ihres Host-Betriebssystems (Linux, CentOS usw.) ein.

$docker images

$docker run -it ubuntu

$apt-get update

$apt-get install net-tools

(Randnotiz: Sie können alle anderen Tools und Dienste hinzufügen, die Sie jetzt hinzufügen möchten, aber im Moment dient dies nur dazu, ifconfig zum Laufen zu bringen.)

$exit

Jetzt werden Sie diese Änderungen an Docker übergeben. Dieser Link zum Festschreiben von Änderungen ist die beste Zusammenfassung und funktioniert (fahren Sie mit Schritt 4 fort):

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

Wenn Sie das Docker-Image in GNS3 erneut öffnen, sollte jetzt der Befehl ifconfig verwendbar sein und alle anderen Tools oder Dienste, die Sie dem Container hinzugefügt haben.

Genießen!


-1

sudo apt-get installiere iproute2 und führe dann ip addr show aus

Es klappt..


2
Hallo, willkommen bei Stack Overflow. Da es sich um eine alte Frage mit einer äußerst beliebten akzeptierten Antwort handelt, bearbeiten Sie bitte Ihre Antwort, um zu erklären, was die vorhandenen Antworten nicht bieten. Vielen Dank.
MandyShaw
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.