Чому ifconfig не доступний у контейнері Ubuntu Docker?


64

Із заснуванням ubuntu:12.04, ifconfigне доступний в контейнері, хоча ipкоманда доступна, чому це? і, як потрапити ifconfigв контейнер?



Я знаю, що ifconfigце якось застаріло, але деякі програми все ще залежать від цього.
Пеллаеон

3
Чи розробники ще живі? Це було знято років тому.
Майкл Хемптон

Під час використання ipв поточній версії програмного забезпечення виникає помилка . Мені потрібно швидке вирішення проблеми.
Pellaeon

1
"Деякі програми" та "є помилка": чи можете ви бути більш конкретними?
Марк Вагнер

Відповіді:


95

Ви можете встановити ifconfig за допомогою apt-get install net-tools. (Зокрема, додавши RUN apt-get install -y net-toolsу свій Dockerfile.)

На підставі мого тесту, ifconfig включений в ubuntu: 14.04.


6
Все ще змушує мене замислитися, чому він не включений за замовчуванням, але я вважаю, що сенс цього контейнера полягає в тому, що він настільки мінімальний, наскільки це можливо, і все ще працює.
Ігуананавт

5
Ще одне доповнення - у новому екземплярі контейнера Ubuntu списки пакунків також не заповнені, тому потрібно запустити, sudo apt-get updateякщо ви ще цього не зробили.
Ігуананавт

1
ifconfigне входить до ubuntu:16:04.
JamesThomasMoon1979

11
Щоб відповісти на @Iguananaut: VM Ubuntu становить 500+ Мб, тоді як зображення Ubuntu Docker менше 100 МБ. Хлопці, що створюють зображення контейнерів, повинні намалювати лінію щодо того, які пакунки / двійкові файли мають бути включені, а які ні, щоб зберігати все основні потреби. Ви знаєте, все це має більше сенсу, якщо ви вважаєте контейнери як процесами, а не як «ізольоване обчислювальне середовище, щоб грати всередині і навколо»
Rushi Agrawal

13

Якщо ви не зможете встановити чисті інструменти, не потрібно давати їх за замовчуванням. Крім того, якщо ви хочете бачити IP-адресу, то є ще одна команда, доступна самим docker: -

docker inspect <container_name or container_id>

docker перевірити синтаксис:docker inspect [OPTIONS] NAME|ID [NAME|ID...]

Цей cmd покаже вам усі деталі запущеного контейнера, включаючи IP-адресу.


4

Я також натрапив на цю неприємність, але, як писав Девендра в докерній інспекції, ви можете отримати всі деталі про контейнер без net-tools. У моєму випадку мені знадобився IP контейнера. Для отримання IP-адреси можна використовувати:

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

EDIT ще коротше позначення для отримання IP-адреси контейнера (див. Приклади перевірки докерів ):

docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container-id-or-name>

Однак це не працюватиме всередині контейнера, як цього вимагала ОП.
Джеральд Шнайдер

Ти правий. Просто здається корисною порадою, і я подумав, що ОП, швидше за все, також шукає IP-адресу контейнера.
Підкорявся
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.