web-dev-qa-db-ja.com

Docker - Ubuntu - bash:ping:コマンドが見つかりません

私はUbuntuを実行するDockerコンテナを持っています。

docker run -it ubuntu /bin/bash

しかし、それはpingを持っていないようです。例えば。

bash: ping: command not found

それをインストールする必要がありますか?

かなり基本的なコマンドが抜けているようです。何も報告されないwhereis pingを試しました。

204
Snowcrash

Dockerイメージはごくわずかですが、公式のUbuntu Dockerイメージにpingをインストールすることができます。

apt-get update
apt-get install iputils-ping

たぶんあなたはpingあなたのイメージを必要とせず、単にテスト目的にそれを使いたいのです。上記の例はあなたを助けるでしょう。

しかし、あなたのイメージ上にpingを実行する必要がある場合は、Dockerfileまたはcommit上記のコマンドを実行したコンテナを新しいイメージに作成することができます。

コミット:

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

あとでaptキャッシュファイルをクリアするなど、dockerイメージを作成する上でのベストプラクティスがあります。

421
Farhad Farahi

This はUbuntuのDocker Hubページで、 this は作成方法です。最低限必要なパッケージが(やや)最低限しかインストールされていないため、追加のものが必要な場合は自分でインストールする必要があります。

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

ただし、通常は「Dockerfile」を作成してビルドします。

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

Googleを使用してチュートリアルを見つけ、既存のDockerfileを参照して通常の動作を確認してください:)たとえば、apt-get clean && rm -rf /var/lib/apt/lists/*コマンドの後にapt-get installを実行して画像サイズを最小化する必要があります。

20
NikoNyrh

あるいは、pingが既にインストールされているDockerイメージを使用することもできます。 busybox

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

一般的に人々はUbuntu/CentOSの公式イメージを引っ張りますが、これらのイメージが最小限であることに気付いておらず、その上には何もありません。

Ubuntuの場合、このイメージはCanonicalが提供する公式のrootfs tarballから構築されています。これがUbuntuの最小インストールであることを考えると、このイメージはデフォルトでC、C.UTF-8、およびPOSIXロケールのみを含みます。

Net-tools(ifconfig、netstatを含む)、ip-utils(pingを含む)などをコンテナーにインストールしたり、コンテナーからイメージを作成したり、イメージを作成しながらこれらのツールをインストールするDockerfileを作成したりできます。

以下はDockerfileの例ですが、これからイメージを作成する際にこれらのツールが含まれます。

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

またはベースイメージからコンテナーを起動してコンテナーにこれらのユーティリティをインストールしてからイメージにコミットします。 docker commit -m "説明メッセージ" container_id image_name:lattest

そのイメージにはすべてのものがインストールされています。

1
Vaseem007

この種のエラーが発生するたびに

bash: <command>: command not found
0
Pablo Bianchi