Perché ifconfig non è disponibile nel contenitore Ubuntu Docker?


64

Con la base ubuntu:12.04, ifconfignon è disponibile nel contenitore, sebbene il ipcomando sia disponibile, perché è questo? e come entrare ifconfignel contenitore?



Sono consapevole che ifconfigè in qualche modo deprecato, ma alcuni programmi dipendono ancora da esso.
Pellaeon,

3
Gli sviluppatori sono ancora vivi? Questo è stato deprecato anni fa.
Michael Hampton

C'è un bug quando si utilizza ipnella versione corrente del software. Ho bisogno di una rapida soluzione del problema.
Pellaeon,

1
"Alcuni programmi" e "c'è un bug": puoi essere più specifico?
Mark Wagner,

Risposte:


95

È possibile installare ifconfig con apt-get install net-tools. (In particolare, aggiungendo RUN apt-get install -y net-toolsal Dockerfile.)

Sulla base del mio test, ifconfig è incluso in Ubuntu: 14.04.


6
Mi chiedo ancora perché non sia incluso per impostazione predefinita, ma suppongo che il punto di questo contenitore sia che è il minimo possibile e può ancora funzionare.
Iguananaut,

5
Un altro addendum: in una nuova istanza del contenitore Ubuntu non vengono nemmeno compilati gli elenchi dei pacchetti, quindi è necessario eseguire sudo apt-get updatese non lo si è già fatto.
Iguananaut,

1
ifconfignon è incluso in ubuntu:16:04.
JamesThomasMoon1979,

11
Per rispondere a @Iguananaut: una macchina virtuale Ubuntu è di oltre 500 MB, mentre un'immagine Docker di Ubuntu è inferiore a 100 MB. I ragazzi che creano immagini di contenitori devono tracciare una linea su quali pacchetti / binari dovrebbero essere inclusi e cosa no, in modo da mantenere solo le necessità di base. Sai, tutto questo ha più senso se pensi che i container siano processi e non un "ambiente informatico isolato per giocare dentro e su"
Rushi Agrawal,

13

A meno che non sia possibile installare net-tools, non è necessario fornirlo per impostazione predefinita. Inoltre, se si desidera visualizzare l'indirizzo IP, è disponibile un altro comando dalla stessa finestra mobile: -

docker inspect <container_name or container_id>

la finestra mobile controlla la sintassi:docker inspect [OPTIONS] NAME|ID [NAME|ID...]

Questo cmd mostra tutti i dettagli del container in esecuzione, incluso l'indirizzo IP.


4

Mi sono anche imbattuto in questo fastidio, ma mentre Devendra scriveva in una finestra mobile ispezionando puoi ottenere tutti i dettagli sul contenitore senza net-tools. Nel mio caso avevo bisogno dell'IP del contenitore. Per estrarre l'IP puoi usare:

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

MODIFICA una notazione ancora più breve per ottenere l'IP del contenitore (vedi esempi di ispezione della finestra mobile ):

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

Tuttavia, ciò non funzionerà all'interno del contenitore, come richiesto dall'OP.
Gerald Schneider,

Hai ragione. Sembri solo un suggerimento utile e ho pensato che molto probabilmente OP stava cercando di trovare l'IP del contenitore.
Obbedito il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.