Vraag Waarom is ifconfig niet beschikbaar in Ubuntu Docker-container?


Met de basis ubuntu:12.04, ifconfig is niet beschikbaar in de container, hoewel de ip commando is beschikbaar, waarom is dit? en, hoe te krijgen ifconfig in de container?


48
2017-07-18 04:12


oorsprong


Zien Linux Networking - "ip X" in plaats van ifconfig / route / etc? en Moet ik stoppen met het gebruik van Ifconfig? - Michael Hampton♦
ik ben me er bewust van dat ifconfig is enigszins verouderd, maar sommige programma's zijn er nog steeds afhankelijk van. - Pellaeon
Leven de ontwikkelaars nog? Dit was jaren geleden verouderd. - Michael Hampton♦
Er is een fout bij het gebruik ip in de huidige versie van de software. Ik heb een snelle oplossing van het probleem nodig. - Pellaeon
"Sommige programma's" en "er is een probleem": kunt u specifieker zijn? - Mark Wagner


antwoorden:


U kunt ifconfig installeren met apt-get install net-tools. (Met name door toe te voegen RUN apt-get install -y net-tools naar uw Dockerfile.)

Op basis van mijn test is ifconfig opgenomen in ubuntu: 14.04.


79
2017-07-23 20:40



Ik vraag me nog steeds af waarom het standaard niet is opgenomen, maar ik denk dat het doel van deze container is dat hij zo minimaal mogelijk is en nog steeds werkt. - Iguananaut
Nog een addendum - op een nieuw exemplaar van de Ubuntu-container staan ​​de pakketlijsten ook niet, dus je moet rennen sudo apt-get update als je dat nog niet hebt gedaan. - Iguananaut
ifconfig is niet opgenomen in ubuntu:16:04. - JamesThomasMoon1979
Om @Iguananaut te beantwoorden: een Ubuntu VM is 500+ MB, terwijl een Ubuntu Docker-afbeelding minder is dan 100 MB. Jongens die afbeeldingen van containers maken, moeten een lijn trekken met betrekking tot welke pakketten / binaire bestanden moeten worden opgenomen en wat niet, om alleen de basisbehoeften binnen te houden. Weet je, dit alles is logischer als je containers als processen beschouwt, en niet als een 'geïsoleerde computeromgeving om in en over te spelen'. - Rushi Agrawal


Tenzij en totdat u netto-tools kunt installeren, is het niet nodig om dit standaard te geven. Ook als u het IP-adres wilt zien, is er andere opdrachten beschikbaar voor de docker zelf:

docker inspect <container_name or container_id>

havenarbeider inspecteren syntaxis: docker inspect [OPTIONS] NAME|ID [NAME|ID...]

Deze cmd toont u elk detail van een lopende container inclusief ip-adres.


7
2017-09-18 22:14





Ik struikelde ook over deze overlast, maar zoals Devendra schreef in havenarbeider inspecteren je kunt alle details over de container krijgen zonder net-tools. In mijn geval had ik de IP van de container nodig. Om het IP-adres te extraheren, kunt u het volgende gebruiken:

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

BEWERK nog kortere notatie om het IP-adres van de container te krijgen (zie havenarbeider inspecteert voorbeelden):

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

2
2018-06-22 07:14



Dit zal echter niet in de container werken, zoals het OP heeft gevraagd. - Gerald Schneider
Je hebt gelijk. Het lijkt me gewoon een nuttige tip en ik dacht dat OP waarschijnlijk ook op zoek was naar de IP van de container. - Obeyed