Dlaczego ifconfig nie jest dostępny w kontenerze Ubuntu Docker?

64

Z podstawą ubuntu:12.04, ifconfignie jest dostępna w pojemniku, jeśli ippolecenie jest dostępne, dlaczego tak jest? i jak dostać się ifconfigdo pojemnika?

Pellaeon
źródło
Wiem, że ifconfigjest to w pewnym sensie przestarzałe, ale niektóre programy nadal od tego zależą.
Pellaeon,
3
Czy programiści wciąż żyją? To było przestarzałe lata temu.
Michael Hampton
Podczas używania ipw bieżącej wersji oprogramowania występuje błąd. Potrzebuję szybkiego obejścia problemu.
Pellaeon,
1
„Niektóre programy” i „jest błąd”: czy możesz być bardziej szczegółowy?
Mark Wagner,

Odpowiedzi:

95

Możesz zainstalować ifconfig za pomocą apt-get install net-tools. (W szczególności poprzez dodanie RUN apt-get install -y net-toolsdo pliku Docker.)

Na podstawie mojego testu ifconfig jest zawarty w Ubuntu: 14.04.

Randall Smith
źródło
6
Nadal zastanawiam się, dlaczego domyślnie nie jest dołączony, ale przypuszczam, że celem tego kontenera jest to, że jest tak minimalny, jak to tylko możliwe i nadal działa.
Iguananaut
5
Kolejne uzupełnienie - w nowej instancji kontenera Ubuntu listy pakietów również nie są zapełniane, więc musisz je uruchomić, sudo apt-get updatejeśli jeszcze tego nie zrobiłeś.
Iguananaut
1
ifconfignie jest uwzględnione w ubuntu:16:04.
JamesThomasMoon1979
11
Aby odpowiedzieć @Iguananaut: Maszyna wirtualna Ubuntu ma ponad 500 MB, podczas gdy obraz Ubuntu Docker ma mniej niż 100 MB. Faceci tworzący obrazy kontenerów muszą narysować linię określającą, które pakiety / pliki binarne powinny zostać uwzględnione, a co nie, aby zachować tylko podstawowe potrzeby. Wiesz, wszystko to ma większy sens, jeśli myślisz, że kontenery są procesami, a nie „odizolowanym środowiskiem komputerowym do zabawy wewnątrz”
Rushi Agrawal
13

Chyba że i dopóki nie będziesz mógł zainstalować narzędzi sieciowych, nie ma potrzeby dawania go domyślnie. Ponadto, jeśli chcesz zobaczyć adres IP, to samo dokowanie udostępnia inne polecenie: -

docker inspect <container_name or container_id>

doker sprawdza składnię:docker inspect [OPTIONS] NAME|ID [NAME|ID...]

To cmd pokaże każdy szczegół działania kontenera, w tym adres IP.

Devendra Bhat
źródło
4

Natknąłem się również na tę niedogodność, ale jak napisała Devendra w inspekcji dokerów , możesz uzyskać wszystkie szczegóły dotyczące kontenera bez net-tools. W moim przypadku potrzebowałem adresu IP kontenera. Aby wyodrębnić adres IP, możesz użyć:

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

EDYCJA jeszcze krótszej notacji, aby uzyskać adres IP kontenera (patrz przykłady inspekcji dokera ):

docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container-id-or-name>
Posłuszny
źródło
Nie zadziała to jednak wewnątrz kontenera, tak jak zażądał PO.
Gerald Schneider
Masz rację. Wydaje mi się, że to przydatna wskazówka, i pomyślałem, że OP najprawdopodobniej również szuka adresu IP kontenera.
Posłuchano