Por que o ifconfig não está disponível no contêiner Ubuntu Docker?

64

Com a base ubuntu:12.04, ifconfignão está disponível no contêiner, embora o ipcomando esteja disponível, por que isso? e como entrar ifconfigno container?

Pellaeon
fonte
Estou ciente de que, de ifconfigalguma forma, está obsoleto, mas alguns programas ainda dependem disso.
Pellaeon
3
Os desenvolvedores ainda estão vivos? Isso foi preterido anos atrás.
Michael Hampton
Há um erro ao usar ipna versão atual do software. Preciso de uma solução rápida para o problema.
Pellaeon
11
"Alguns programas" e "há bug": você pode ser mais específico?
58568 Mark Wagner

Respostas:

95

Você pode instalar o ifconfig com apt-get install net-tools. (Especificamente, adicionando RUN apt-get install -y net-toolsao seu Dockerfile.)

Com base no meu teste, o ifconfig está incluído no ubuntu: 14.04.

Randall Smith
fonte
6
Ainda me faz pensar por que não está incluído por padrão, mas suponho que o objetivo desse contêiner seja que ele seja o mínimo possível e ainda funcione.
Iguananaut 04/02
5
Outro adendo - em uma nova instância do contêiner Ubuntu, as listas de pacotes também não são preenchidas; portanto, você deve executar sudo apt-get updatese ainda não o tiver.
Iguananaut
11
ifconfignão está incluído no ubuntu:16:04.
JamesThomasMoon1979
11
Para responder @Iguananaut: Uma VM do Ubuntu tem mais de 500 MB, enquanto uma imagem do Ubuntu Docker tem menos de 100 MB. As pessoas que criam imagens de contêineres precisam traçar uma linha sobre quais pacotes / binários devem ser incluídos e quais não, de modo a manter apenas as necessidades básicas. Você sabe, tudo isso faz mais sentido se você pensar recipientes como processos, e não como um 'ambiente de computação isolado jogar dentro e sobre'
Rushi Agrawal
13

A menos e até que você possa instalar o net-tools, não há necessidade de fornecê-lo por padrão. Além disso, se você quiser ver o endereço IP, existe outro comando disponível pelo próprio docker: -

docker inspect <container_name or container_id>

janela de encaixe inspecionar sintaxe:docker inspect [OPTIONS] NAME|ID [NAME|ID...]

Este cmd mostrará todos os detalhes do contêiner em execução, incluindo o endereço IP.

Devendra Bhat
fonte
4

Também tropecei nesse incômodo, mas, como Devendra escreveu no docker inspecionar, você pode obter todos os detalhes sobre o contêiner sem ele net-tools. No meu caso, eu precisava do IP do contêiner. Para extrair o IP, você pode usar:

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

EDITE uma notação ainda mais curta para obter o IP do contêiner (consulte os exemplos do docker inspecionar ):

docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container-id-or-name>
Obedecido
fonte
No entanto, isso não funcionará dentro do contêiner, conforme solicitado pelo OP.
Gerald Schneider
Você está certo. Apenas pareça uma dica útil, e eu pensei que o OP provavelmente também procurava encontrar o IP do contêiner.
Obedeceu 22/06