Как установить команду «ifconfig» в образ докера ubuntu?


88

Я только что установил образ докера ubuntu, когда я выполняю «ifconfig», он говорит, что такой команды нет, я попробовал установить apt-get, поскольку там нет пакета с именем «ifconfig» (я могу установить некоторые другие образы).

Итак, как это сделать? Благодарю.


4
serverfault.com/a/614972 - в вашем DockerfileRUN apt-get install -y net-tools
Брайан,

1
iproute2 - это набор сетевых инструментов Linux, который заменил сетевые инструменты (ifconfig, route, arp и т. д.), см. baturin.org/docs/iproute2, а также lwn.net/Articles/710533
Скотт

Могу я задать вопросы по установке в SO? Вопросы о программных инструментах, обычно используемых программистами, должны представлять собой практическую проблему, на которую можно дать ответ, уникальную для разработки программного обеспечения.
Трентон МакКинни

Ответы:


182

На новом образе докера ubuntu запустите

apt-get update
apt-get install net-tools

Их можно выполнить, войдя в контейнер докеров или добавив это в свой файл докеров, чтобы создать образ с тем же.


7
net-tools теперь устарели ... его замена: iproute2 - это набор сетевых инструментов Linux, который заменил net-tools (ifconfig, route, arp и т. д.), см. baturin.org/docs/iproute2, а также lwn.net/Articles/710533
Скотт Стенсленд

12

Вы также можете рассмотреть:

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

(как комментирует Contango : вы должны сначала запустить , чтобы избежать ошибки с отсутствующим репозиторием).apt-get update

См. " Замена ifconfig на ip "

чаще всего рекомендуется продвигаться вперед с замененной командой ifconfig. Эта команда есть ip, и она отлично справляется с заменой устаревших ifconfig.

Но, как показано в разделе « Получение IP-адреса контейнера Docker от хоста », использование docker inspectможет быть более полезным в зависимости от вашего варианта использования.


1
Сначала необходимо запустить apt-get update(чтобы избежать ошибки с отсутствующим репозиторием).
контанго

1
@Contango Спасибо. Я включил ваш комментарий в ответ для большей наглядности.
VonC

RUN apt-get update && apt-get install -y iputils-pingне ip-utils-ping По крайней мере, так это работает для меня.
Чейз

@Chase Спасибо. Я соответствующим образом отредактировал ответ.
VonC

2

Используйте приведенную ниже команду, чтобы получить IP-адрес работающего контейнера.

$ ip addr

Пример-:

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

Это не работает в образе докеры Ubuntu 747cb2d60bbe. ifconfigэто тоже не работает.
shimatai

2

Изнутри Dockerfile что-то вроде следующего должно помочь:

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

Лучше всего по памяти объединить строки обновления и установки пакета, чтобы предотвратить кеширование докером этапа обновления, что может привести к установке устаревших пакетов.

Установка через CLI или сценарий оболочки:

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


2

Я пришел сюда, потому что пытался использовать ifconfig в контейнере, чтобы найти его IPA-адрес, а ifconfig не было. Если вам действительно нужен ifconfig в контейнере, используйте ответ @ vishnu-narayanan выше, однако вы можете получить необходимую информацию, используя docker inspect на хосте:

docker inspect <containerid>

В выводе много хороших вещей, включая IPAddress контейнера:

"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

Если вы хотите использовать образ Docker как «обычную» установку Ubuntu, вы также можете запустить его unminimize. Это установит намного больше ifconfig, так что это может быть не то, что вам нужно.



0

Если образ Ubuntu Docker не распознает ifconfig внутри GNS3, вам необходимо открыть образ Docker Ubuntu на своем хосте.

Предполагая, что у вас уже есть докер на вашем хост-компьютере и ubuntu извлекает из образов докеров. Введите эти команды в CLI вашей ОС хоста (Linux, CentOS и т. Д.).

$docker images

$docker run -it ubuntu

$apt-get update

$apt-get install net-tools

(примечание: вы можете добавить любые другие инструменты и службы, которые хотели бы добавить сейчас, но пока это просто для того, чтобы ifconfig работал.)

$exit

Теперь вы зафиксируете эти изменения в Docker. Эта ссылка для фиксации изменений является лучшим резюме и работает (переходите к шагу 4):

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

Когда вы повторно открываете образ докера в GNS3, теперь у вас должна быть доступна команда ifconfig и любые другие инструменты или службы, которые вы добавили в контейнер.

Наслаждайтесь!


-1

sudo apt-get install iproute2 затем запустите ip addr show

оно работает..


2
Привет, добро пожаловать в Stack Overflow. Поскольку это старый вопрос с чрезвычайно популярным принятым ответом, отредактируйте свой ответ, чтобы объяснить, что он дает, чего нет в существующих ответах. Благодарю.
MandyShaw
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.