Jak zainstalować polecenie „ifconfig” w moim obrazie Dockera Ubuntu?

88

Właśnie zainstalowałem obraz dockera ubuntu, kiedy wykonuję "ifconfig", mówi, że nie ma takiego polecenia, próbowałem apt-get install, ponieważ nie ma pakietu o nazwie "ifconfig" (mogę zainstalować inne obrazy).

Więc jak to zrobić? Dzięki.

Hind Forsum
źródło
4
serverfault.com/a/614972 - w Twoim pliku DockerfileRUN apt-get install -y net-tools
Brian
1
iproute2 to zestaw narzędzi sieciowych Linuksa, który zastąpił net-tools (ifconfig, route, arp itp.), patrz baturin.org/docs/iproute2, a także lwn.net/Articles/710533
Scott Stensland
Czy mogę zadawać pytania dotyczące instalacji w SO? Pytania dotyczące narzędzi programowych powszechnie używanych przez programistów muszą być praktycznym problemem, na który można odpowiedzieć, unikalnym dla tworzenia oprogramowania.
Trenton McKinney

Odpowiedzi:

182

Na nowym obrazie dockera Ubuntu uruchom

apt-get update
apt-get install net-tools

Można je wykonać, logując się do kontenera dockera lub dodając go do pliku dockerfile, aby zbudować obraz z tym samym.

Vishnu Narayanan
źródło
7
net-tools jest teraz przestarzałe ... jego zamiennik: iproute2 to zestaw narzędzi sieciowych Linuksa, który zastąpił net-tools (ifconfig, route, arp itp.) Zobacz baturin.org/docs/iproute2 i zobacz także lwn.net/Articles/710533
Scott Stensland
12

Możesz również rozważyć:

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

(jak komentuje Contango : musisz najpierw uruchomićapt-get update , aby uniknąć błędu związanego z brakującym repozytorium).

Zobacz „ Zamiana ifconfig na ip

najczęściej zaleca się wykonanie polecenia, które zostało zastąpione ifconfig. To polecenie jest ipi wykonuje świetną robotę, zastępując nieaktualne ifconfig.

Ale jak widać w „ Pobieranie adresu IP kontenera Dockera z hosta ”, użycie docker inspectmoże być bardziej przydatne w zależności od przypadku użycia.

VonC
źródło
1
Należy najpierw uruchomić apt-get update(aby uniknąć błędu związanego z brakującym repozytorium).
Contango
1
@Contango Dziękuję. W odpowiedzi zawarłem Twój komentarz, aby uzyskać lepszą widoczność.
VonC
RUN apt-get update && apt-get install -y iputils-pingnie ip-utils-ping Przynajmniej tak to działa w moim przypadku.
Chase
@Chase Dziękuję. Odpowiednio zredagowałem odpowiedź.
VonC
2

Użyj poniższego polecenia, aby uzyskać adres IP uruchomionego kontenera.

$ ip addr

Przykład-:

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
Arvind Rawat
źródło
Nie działa w obrazie Dockera Ubuntu 747cb2d60bbe. ifconfigto też nie działa.
shimatai
2

Z poziomu pliku Dockerfile powinno załatwić coś takiego:

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

Z pamięci najlepiej jest połączyć aktualizację i wiersze instalacji pakietu, aby zapobiec buforowaniu przez docker kroku aktualizacji, co może spowodować zainstalowanie przestarzałych pakietów.

Instalowanie go przez CLI lub skrypt powłoki:

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

Brian
źródło
2

Przyszedłem tutaj, ponieważ próbowałem użyć ifconfig na kontenerze, aby znaleźć jego adres IP, a nie było ifconfig. Jeśli naprawdę potrzebujesz ifconfig w kontenerze, skorzystaj z odpowiedzi @ vishnu-narayanan powyżej, jednak możesz uzyskać potrzebne informacje, używając docker inspect na hoście:

docker inspect <containerid>

W wynikach jest wiele dobrych rzeczy, w tym adres IP kontenera:

"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
    }
}
mancocapac
źródło
1

Jeśli chcesz użyć obrazu Dockera jako „zwykłej” instalacji Ubuntu, możesz również uruchomić unminimize. Spowoduje to instalację znacznie więcej niż ifconfig, więc może to nie być to, czego chcesz.

László van den Hoek
źródło
1

pisać

sudo apt-get install net-tools

Javier Jiménez Jiménez
źródło
0

Jeśli obraz Ubuntu Docker nie rozpoznaje „ifconfig” w GNS3, musisz otworzyć obraz Dockera Ubuntu na swoim hoście.

Zakładając, że masz już docker na swoim komputerze-hoście i ubuntu ściągnięty z obrazów dockera. Wprowadź te polecenia w interfejsie CLI hosta (Linux, CentOS itp.).

$docker images

$docker run -it ubuntu

$apt-get update

$apt-get install net-tools

(Uwaga dodatkowa: możesz dodać dowolne inne narzędzia i usługi, które chcesz dodać teraz, ale na razie jest to tylko po to, aby ifconfig działał).

$exit

Teraz wprowadzisz te zmiany do Dockera. Ten link do zatwierdzania zmian jest najlepszym podsumowaniem i działa (przejdź do kroku 4):

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

Kiedy ponownie otworzysz obraz dockera w GNS3, powinieneś mieć teraz użyteczne polecenie ifconfig i wszelkie inne narzędzia lub usługi, które dodałeś do kontenera.

Cieszyć się!

Insaini
źródło
-1

sudo apt-get install iproute2, a następnie uruchom ip addr show

to działa..

aamirngr
źródło
2
Cześć, witaj w Stack Overflow. Ponieważ jest to stare pytanie z niezwykle popularną, akceptowaną odpowiedzią, edytuj swoją odpowiedź, aby wyjaśnić, co zawiera, a dotychczasowe odpowiedzi nie. Dzięki.
MandyShaw