it-swarm.com.de

Docker - Ubuntu - bash: ping: Befehl nicht gefunden

Ich habe einen Docker-Container mit Ubuntu, den ich wie folgt gemacht habe:

docker run -it ubuntu /bin/bash

es scheint jedoch nicht ping zu haben. Z.B.

bash: ping: command not found

Muss ich das installieren?

Scheint ein ziemlich grundlegender Befehl zu sein. Ich habe whereis ping ausprobiert, der nichts berichtet.

167
Snowcrash

Docker-Images sind ziemlich minimal. Sie können jedoch ping in Ihrem offiziellen Ubuntu-Docker-Image über Folgendes installieren:

apt-get update
apt-get install iputils-ping

Möglicherweise benötigen Sie nicht ping Ihr Image und möchten es nur zu Testzwecken verwenden. Das obige Beispiel hilft Ihnen dabei.

Wenn Sie jedoch Ping auf Ihrem Image benötigen, können Sie eine Dockerfile oder commit des Containers erstellen, in dem Sie die obigen Befehle in ein neues Image ausgeführt haben.

Verpflichten:

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

Dockerfile:

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

Bitte beachten Sie, dass es Best Practices für das Erstellen von Docker-Images gibt.

362
Farhad Farahi

Dies ist die Docker Hub-Seite für Ubuntu und so So wird es erstellt. Es sind nur (ein paar) nackte Mindestpakete installiert. Wenn Sie zusätzliche Funktionen benötigen, müssen Sie sie selbst installieren.

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

Normalerweise erstellen Sie jedoch eine "Dockerfile" und erstellen diese:

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

Verwenden Sie Google, um nach Tutorials zu suchen und vorhandene Dockerfiles zu durchsuchen, um zu sehen, wie sie normalerweise vorgehen. Zum Beispiel sollte die Bildgröße durch Ausführen von apt-get clean && rm -rf /var/lib/apt/lists/* nach apt-get install-Befehlen minimiert werden.

19
NikoNyrh

Alternativ können Sie ein Docker-Image verwenden, auf dem bereits Ping installiert ist, z. busybox :

docker run --rm busybox ping SERVER_NAME -c 2
2
Ivan

Im Allgemeinen ziehen die Leute das offizielle Bild von Ubuntu/CentOS, aber sie wissen nicht, dass diese Bilder minimal sind und darüber nichts zu sagen haben.

Für Ubuntu wird dieses Bild aus offiziellen Rootfs-Tarballs erstellt, die von Canonical bereitgestellt werden. Da es sich um eine minimale Installation von Ubuntu handelt, enthält dieses Image standardmäßig nur die Gebietsschemas C, C.UTF-8 und POSIX.

Sie können net-tools (einschließlich ifconfig, netstat), ip-utils (einschließlich Ping) und andere Objekte wie curl usw. in einem Container installieren und ein Image aus einem Container erstellen oder eine Docker-Datei schreiben, mit der diese Tools beim Erstellen des Images installiert werden.

Das folgende Dockerfile-Beispiel enthält beim Erstellen eines Images folgende Werkzeuge:

FROM vkitpro/ubuntu16.04
RUN     apt-get  update -y \
&& apt-get upgrade -y \
&& apt-get install iputils-ping -y \
&& apt-get install net-tools -y \
CMD bash

oder starten Sie den Container vom Basis-Image und installieren Sie diese Dienstprogramme im Container und legen Sie anschließend das Commit für image ..__ fest. -docker -m "beliebige beschreibende Nachricht" container_id image_name: lattest

Dieses Image wird alles installiert haben.

1
Vaseem007

Jedes Mal, wenn Sie diese Art von Fehler erhalten

bash: <command>: command not found
  • Auf einem Host mit diesem Befehl, der bereits mit dieser Lösung arbeitet:

    dpkg -S $(which <command>)
    
  • Sie haben keinen Host mit diesem Paket installiert? Versuche dies :

    apt-file search /bin/<command>
    
0
Pablo Bianchi