Mengapa ifconfig tidak tersedia dalam wadah Ubuntu Docker?

64

Dengan basis ubuntu:12.04, ifconfigtidak tersedia dalam wadah, meskipun ipperintahnya tersedia, mengapa ini? dan, bagaimana cara masuk ke ifconfigdalam wadah?

Pellaeon
sumber
Saya sadar bahwa ifconfigitu sudah usang, tetapi beberapa program masih bergantung padanya.
Pellaeon
3
Apakah pengembangnya masih hidup? Ini sudah ditinggalkan bertahun-tahun yang lalu.
Michael Hampton
Ada bug saat menggunakan ipdalam versi perangkat lunak saat ini. Saya perlu solusi cepat untuk masalah ini.
Pellaeon
1
"Beberapa program" dan "ada bug": dapatkah Anda lebih spesifik?
Mark Wagner

Jawaban:

95

Anda dapat menginstal ifconfig dengan apt-get install net-tools. (Khususnya, dengan menambahkan RUN apt-get install -y net-toolske Dockerfile Anda.)

Berdasarkan pengujian saya, ifconfig termasuk dalam ubuntu: 14.04.

Randall Smith
sumber
6
Masih membuat saya bertanya-tanya mengapa itu tidak termasuk secara default, tapi saya kira inti dari wadah ini adalah seminimal mungkin dan masih berfungsi.
Iguananaut
5
Tambahan lain - pada contoh baru dari wadah Ubuntu daftar paket juga tidak terisi, jadi Anda harus menjalankannya sudo apt-get updatejika belum.
Iguananaut
1
ifconfigtidak termasuk dalam ubuntu:16:04.
JamesThomasMoon1979
11
Untuk menjawab @Iguananaut: VM Ubuntu adalah 500+ MB, sedangkan gambar Ubuntu Docker kurang dari 100MB. Orang-orang yang membuat wadah gambar perlu menggambar garis untuk paket / binari apa yang harus dimasukkan dan apa yang tidak, sehingga hanya menyimpan kebutuhan dasar di dalam. Anda tahu, semua ini lebih masuk akal jika Anda menganggap wadah sebagai proses, dan bukan sebagai 'lingkungan komputasi yang terisolasi untuk dimainkan di dalam dan di sekitar'
Rushi Agrawal
13

Kecuali dan sampai Anda dapat menginstal net-tools, tidak perlu untuk memberikannya secara default. Juga jika Anda ingin melihat alamat IP maka ada perintah lain yang tersedia oleh buruh pelabuhan itu sendiri: -

docker inspect <container_name or container_id>

buruh pelabuhan memeriksa sintaks:docker inspect [OPTIONS] NAME|ID [NAME|ID...]

Cmd ini akan menunjukkan kepada Anda setiap detail wadah yang berjalan termasuk alamat IP.

Devendra Bhat
sumber
4

Saya juga menemukan gangguan ini, tetapi seperti yang ditulis Devendra di docker, Anda bisa mendapatkan semua detail tentang wadah tanpa itu net-tools. Dalam kasus saya, saya membutuhkan IP kontainer. Untuk mengekstrak IP Anda dapat menggunakan:

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

Sunting notasi yang bahkan lebih pendek untuk mendapatkan IP kontainer (lihat contoh inspeksi buruh pelabuhan ):

docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container-id-or-name>
Dipatuhi
sumber
Namun ini tidak akan berfungsi di dalam wadah, seperti yang diminta OP.
Gerald Schneider
Kamu benar. Kelihatannya seperti tip yang berguna, dan saya pikir OP kemungkinan besar juga mencari untuk menemukan IP wadah itu.
Ditaati