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.
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.
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.
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
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.
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>