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).
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.
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).
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.
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.
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:
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.
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.).
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.
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.
RUN apt-get install -y net-tools
Odpowiedzi:
Na nowym obrazie dockera Ubuntu uruchom
Można je wykonać, logując się do kontenera dockera lub dodając go do pliku dockerfile, aby zbudować obraz z tym samym.
źródło
Możesz również rozważyć:
(jak komentuje Contango : musisz najpierw uruchomić
apt-get update
, aby uniknąć błędu związanego z brakującym repozytorium).Zobacz „ Zamiana ifconfig na ip ”
Ale jak widać w „ Pobieranie adresu IP kontenera Dockera z hosta ”, użycie
docker inspect
może być bardziej przydatne w zależności od przypadku użycia.źródło
apt-get update
(aby uniknąć błędu związanego z brakującym repozytorium).RUN apt-get update && apt-get install -y iputils-ping
nieip-utils-ping
Przynajmniej tak to działa w moim przypadku.Użyj poniższego polecenia, aby uzyskać adres IP uruchomionego kontenera.
Przykład-:
źródło
ifconfig
to też nie działa.Z poziomu pliku Dockerfile powinno załatwić coś takiego:
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
źródło
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 } }
źródło
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.źródło
pisać
sudo apt-get install net-tools
źródło
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.).
(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ł).
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ę!
źródło
sudo apt-get install iproute2, a następnie uruchom ip addr show
to działa..
źródło