2016-10-06 52 views
65
ben şöyle yaptım Ubuntu çalıştıran bir Docker kabı var

:Docker - Ubuntu - bash: Ping: komut bulunamadı

docker run -it ubuntu /bin/bash 

ancak ping sahip görünmüyor. Örneğin.

bash: ping: command not found 

Bunu yüklemem gerekir mi?

Eksik olması için oldukça basit bir komut gibi görünüyor. Bir şey bildirmeyen whereis ping'u denedim.

+2

Docker görüntüsünün minimum düzeyde olması tamamen uygun. Çoğu durumda, bir konteyner hiçbir zaman hiçbir şey yapmaz, ancak tek bir uygulamayı çalıştırır - neden uygulama gerektirmeyen herhangi bir şeyi yükler? –

+0

Yalnızca tanılamayı çalıştırmak istiyorsanız, meşgul kutusunu (ki bu resim pingi içerir) çalıştırmak daha kolay olabilir, örneğin: docker run -it --rm busybox ping my-server. –

cevap

152

Docker görüntüleri çok çok az olduğu, Ama aracılığıyla resmi ubuntu liman işçisi görüntüde ping yükleyebilirsiniz:

apt-get update 
apt-get install iputils-ping 

Şansını ping görüntünüzü ihtiyacım yok, ve sadece test amaçlı kullanmak istiyorum. Yukarıdaki örnek size yardımcı olacaktır.

Görüntünüzde varolan bir ping'e ihtiyacınız varsa, yukarıdaki komutları yeni bir görüntüde kaydettiğiniz kapsayıcıya bir Dockerfile veya commit oluşturabilirsiniz.

Commit:

docker commit -m "Installed iputils-ping" --author "Your Name <[email protected]>" ContainerNameOrId yourrepository/imagename:tag 

Dockerfile: vb

4

This Docker sonra apt önbellek dosyalarını temizleyerek ve gibi, liman işçisi görüntüleri oluşturma konusunda en iyi uygulamalar vardır

FROM ubuntu 
RUN apt-get update && apt-get install -y iputils-ping 
CMD bash 

unutmayın Ubuntu ve this için hub sayfası nasıl oluşturulur. Sadece (biraz) çıplak asgari paketler yüklüdür, böylece ekstra bir şeye ihtiyacınız varsa, kendiniz yüklemeniz gerekir.

apt-get update && apt-get install -y iputils-ping 

Ancak genellikle bir "Dockerfile" oluşturmak ve inşa ederlerdi:

mkdir ubuntu_with_ping 
cat >ubuntu_with_ping/Dockerfile <<'EOF' 
FROM ubuntu 
RUN apt-get update && apt-get install -y iputils-ping 
CMD bash 
EOF 
docker build -t ubuntu_with_ping ubuntu_with_ping 
docker run -it ubuntu_with_ping 

genellikle örnek resim için :) işleri nasıl görmek öğreticiler bulmak ve Dockerfiles mevcut göz atmak için Google'ı kullanıyor Lütfen boyutu apt-get install komutlarından sonra apt-get clean && rm -rf /var/lib/apt/lists/* çalıştırılarak en aza indirilmelidir.

+0

'echo -e' aslında [POSIX sh standardını ortadan kaldırır] (http://pubs.opengroup.org/onlinepubs/009604599/utilities/echo.html); çıktığında. (Bash'ın bazı sürümleriyle bile, varsayılan davranış budur). 'Printf' yerine şunu kullanın: 'printf '% s \ n'" UBuntu'yu YAPIN "" RUN apt-get update && apt-get install -y iputils-ping "" CMD bash "', ve yukarıdaki UYGULAMA KULLANIMI bölümüne bakın. bağlantılı standartlar belgesi. –

+0

Hatta bash, "--enable-xpg-echo-default" ile derlenmiş POSIX modunda veya uygunsa, "echo -e" yi beklediğiniz şekilde desteklemez (ancak bunun yerine standartlara uygun davranışı olacaktır) ortam değişkenleri veya diğer çalışma zamanı yapılandırması. –

+0

(POSIX, echo'nun ilk argüman olarak -n'yi verdikten sonra veya herhangi bir ters eğik çizgi kelimesi bulunduğunda, uygulama tanımlı bir şekilde davranmasına izin verir - ancak o zaman bile, * uygulama tanımlı *, standart olarak garanti edilmez. davranış, kullanımdaki münferit kabuğa bağlıdır). –