私はUbuntuを実行するDockerコンテナを持っています。
docker run -it ubuntu /bin/bash
しかし、それはping
を持っていないようです。例えば。
bash: ping: command not found
それをインストールする必要がありますか?
かなり基本的なコマンドが抜けているようです。何も報告されないwhereis ping
を試しました。
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イメージを作成する上でのベストプラクティスがあります。
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
を実行して画像サイズを最小化する必要があります。
あるいは、pingが既にインストールされているDockerイメージを使用することもできます。 busybox :
docker run --rm busybox ping SERVER_NAME -c 2
一般的に人々は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
そのイメージにはすべてのものがインストールされています。
この種のエラーが発生するたびに
bash: <command>: command not found
そのコマンドが既に このソリューションで動作しているホストで :
dpkg -S $(which <command>)
そのパッケージがインストールされたホストを持っていませんか? これを試して :
apt-file search /bin/<command>