Saya punya wadah Docker yang menjalankan Ubuntu yang saya lakukan sebagai berikut:
docker run -it ubuntu /bin/bash
Namun sepertinya tidak ping
. Misalnya
bash: ping: command not found
Apakah saya perlu menginstalnya?
Tampaknya perintah yang cukup mendasar tidak ada. Saya mencoba whereis ping
yang tidak melaporkan apa pun.
Jawaban:
Gambar Docker cukup minim, tetapi Anda dapat menginstal
ping
gambar docker ubuntu resmi Anda melalui:Kemungkinannya adalah Anda tidak perlu
ping
gambar Anda, dan hanya ingin menggunakannya untuk tujuan pengujian. Contoh di atas akan membantu Anda.Tapi jika Anda perlu ping ada pada gambar Anda, Anda dapat membuat
Dockerfile
ataucommit
wadah Anda menjalankan perintah di atas ke gambar baru.Melakukan:
Dockerfile:
Harap perhatikan ada praktik terbaik untuk membuat gambar buruh pelabuhan, Seperti menghapus file cache yang tepat setelah dan lain-lain
sumber
Temporary failure resolving 'security.ubuntu.com'
jelas karena jaringan tidak ada.Ini adalah halaman Hub Docker untuk Ubuntu dan ini adalah bagaimana ia dibuat. Ini hanya memiliki (agak) paket minimum yang terinstal, jadi jika Anda memerlukan sesuatu yang ekstra Anda harus menginstalnya sendiri.
Namun biasanya Anda akan membuat "Dockerfile" dan membangunnya:
Silakan gunakan Google untuk menemukan tutorial dan menelusuri Dockerfiles yang ada untuk melihat bagaimana mereka biasanya melakukan hal-hal :) Misalnya ukuran gambar harus diminimalkan dengan menjalankan
apt-get clean && rm -rf /var/lib/apt/lists/*
setelahapt-get install
perintah.sumber
echo -e
sebenarnya menentang standar sh POSIX , yang tidak mengizinkannya melakukan apapun selain mencetak-e
pada hasilnya. (Bahkan dengan beberapa versi bash, itulah perilaku default). Gunakanprintf
sebaliknya:,printf '%s\n' "FROM ubuntu" "RUN apt-get update && apt-get install -y iputils-ping" "CMD bash"
dan lihat bagian PENGGUNAAN APLIKASI dari dokumen standar yang ditautkan di atas.echo -e
cara yang Anda harapkan (tetapi sebaliknya akan memiliki perilaku yang sesuai standar) ketika dalam mode POSIX dikompilasi--enable-xpg-echo-default
, atau dengan variabel lingkungan yang sesuai atau konfigurasi runtime lainnya.-n
sebagai argumen pertama, atau ketika ada backslash literal hadir - tetapi meskipun demikian, itu implementasi yang ditentukan , tidak dijamin standar, sehingga perilaku tergantung pada shell individu digunakan).Umumnya orang menarik gambar resmi Ubuntu / CentOS tetapi mereka tidak menyadari bahwa gambar-gambar ini minimal dan tidak memiliki apa pun di atas itu.
Untuk Ubuntu, gambar ini dibangun dari tarbal rootfs resmi yang disediakan oleh Canonical. Karena ini adalah instalasi minimal Ubuntu, gambar ini hanya menyertakan lokal C, C.UTF-8, dan POSIX secara default.
Satu dapat menginstal alat-net (termasuk ifconfig, netstat), ip-utils (termasuk ping) dan lain-lain suka curl dll pada wadah dan dapat membuat gambar dari wadah atau dapat menulis Dockerfile yang akan menginstal alat ini saat membuat gambar.
Di bawah ini adalah contoh Dockerfile, sementara membuat gambar dari ini akan mencakup alat-alat ini:
atau luncurkan wadah dari gambar dasar dan instal utilitas ini pada wadah dan kemudian komit ke gambar. docker commit -m "any deskriptif message" container_id image_name: lattest
Gambar itu akan menginstal semuanya.
sumber
Atau Anda dapat menggunakan gambar Docker yang sudah diinstal ping, mis. Busybox :
sumber
apt-get iputils-ping
pada gambar yang membutuhkannya.Setiap kali Anda mendapatkan kesalahan semacam ini
Pada host dengan perintah yang sudah bekerja dengan solusi ini :
Tidak memiliki host dengan paket yang diinstal? Coba ini :
sumber
Kadang-kadang, instalasi minimal Linux di Docker tidak menentukan path dan oleh karena itu perlu untuk memanggil ping menggunakan ....
sumber
Saya telah menggunakan pernyataan di bawah ini pada debian 10
sumber