Mam kontener Docker z systemem Ubuntu, który wykonałem w następujący sposób:
docker run -it ubuntu /bin/bash
jednak wydaje się, że nie ping
. Na przykład
bash: ping: command not found
Czy muszę to zainstalować?
Wydaje się, że brakuje dość podstawowego polecenia. Próbowałem, whereis ping
który niczego nie zgłasza.
Odpowiedzi:
Obrazy
ping
dokerów są dość minimalne, ale możesz je zainstalować na swoim oficjalnym obrazie dokera ubuntu poprzez:Możliwe, że nie potrzebujesz
ping
swojego obrazu, a po prostu chcesz go użyć do celów testowych. Powyższy przykład pomoże ci.Ale jeśli potrzebujesz pinga, aby istnieć na swoim obrazie, możesz utworzyć kontener
Dockerfile
lubcommit
kontener, w którym uruchomiłeś powyższe polecenia do nowego obrazu.Popełnić:
Plik Docker:
Pamiętaj, że istnieją najlepsze praktyki tworzenia obrazów dokerów, takie jak czyszczenie plików apt cache po itp.
źródło
Temporary failure resolving 'security.ubuntu.com'
ponieważ sieci nie ma.To jest strona Docker Hub dla Ubuntu i to jest, jak to jest tworzony. Ma tylko (nieco) zainstalowane minimum pakiety, więc jeśli potrzebujesz czegoś dodatkowego, musisz go zainstalować samodzielnie.
Jednak zwykle tworzysz „plik dokowania” i budujesz go:
Skorzystaj z Google, aby znaleźć samouczki i przeglądać istniejące pliki Docker, aby zobaczyć, jak zwykle to robią :) Na przykład rozmiar obrazu należy zminimalizować, uruchamiając
apt-get clean && rm -rf /var/lib/apt/lists/*
poapt-get install
poleceniach.źródło
echo -e
faktycznie przeciwstawia się standardowi sh POSIX , który nie pozwala mu na nic innego niż drukowanie-e
na jego wyjściu. (Nawet w przypadku niektórych wersji bash jest to zachowanie domyślne).printf
Zamiast tego użyj :printf '%s\n' "FROM ubuntu" "RUN apt-get update && apt-get install -y iputils-ping" "CMD bash"
i zobacz sekcję UŻYWANIE APLIKACJI w wyżej wymienionym dokumencie standardów.echo -e
tego, czego oczekujesz (ale zamiast tego będzie działał zgodnie ze standardami), gdy będzie w trybie POSIX skompilowanym--enable-xpg-echo-default
z odpowiednimi zmiennymi środowiskowymi lub inną konfiguracją środowiska wykonawczego.-n
jako pierwszy argument lub gdy występują jakiekolwiek literały odwrotnego ukośnika - ale nawet wtedy, jest to zdefiniowane w implementacji , nie jest gwarantowane w standardach, więc zachowanie zależy od pojedynczej powłoki w użyciu).Zasadniczo ludzie ściągają oficjalny obraz Ubuntu / CentOS, ale nie zdają sobie sprawy, że te obrazy są minimalne i nie mają nic na wierzchu.
W przypadku Ubuntu ten obraz jest zbudowany z oficjalnych plików tarf rootfs dostarczonych przez Canonical. Ponieważ jest to minimalna instalacja systemu Ubuntu, ten obraz domyślnie zawiera tylko ustawienia narodowe C, C.UTF-8 i POSIX.
Można zainstalować narzędzia sieciowe (w tym ifconfig, netstat), ip-utils (w tym ping) i inne, takie jak curl itp. Na kontenerze i można utworzyć obraz z kontenera lub napisać plik Docker, który zainstaluje te narzędzie podczas tworzenia obrazu.
Poniżej znajduje się przykład Dockerfile, podczas tworzenia obrazu z tego będzie zawierać następujące narzędzia:
lub uruchom kontener z obrazu podstawowego i zainstaluj te narzędzia w kontenerze, a następnie zatwierdź obraz. docker commit -m "dowolny komunikat opisowy" identyfikator_kontenera nazwa_obrazu: lattest
Ten obraz będzie miał wszystko zainstalowane.
źródło
Alternatywnie możesz użyć obrazu Docker, który ma już zainstalowany ping, np. Busybox :
źródło
apt-get iputils-ping
na obrazie, który tego potrzebuje.Za każdym razem, gdy pojawia się tego rodzaju błąd
Na hoście z tym poleceniem, które już działa z tym rozwiązaniem :
Nie masz hosta z tym pakietem? Wypróbuj to :
źródło
Czasami minimalna instalacja Linuksa w Dockerze nie określa ścieżki i dlatego konieczne jest wywołanie ping przy użyciu ....
źródło
Użyłem poniższego stwierdzenia w debian 10
źródło