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.


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.


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.


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

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


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

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.



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ę!


-1

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

to działa..


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.