Docker - Ubuntu - bash: ping: 命令未找到

Docker - Ubuntu - bash: ping: command not found

我有一个 Docker 容器 运行 Ubuntu 我做了如下操作:

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 存在于你的图像中,你可以创建一个 Dockerfilecommit 容器你 运行 以上命令到一个新的图像.

提交:

docker commit -m "Installed iputils-ping" --author "Your Name <name@domain.com>" ContainerNameOrId yourrepository/imagename:tag

Docker文件:

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

请注意创建 docker 图像的最佳实践,例如事后清除 apt 缓存文件等。

This is the Docker Hub page for Ubuntu and 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 以了解它们通常是如何做的:) 例如图像大小应在 [=13] 之后按 运行 apt-get clean && rm -rf /var/lib/apt/lists/* 最小化=] 命令。

或者您可以使用已经安装了 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)和其他喜欢的 curl 等,并且可以从容器创建映像,或者可以编写 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 "any descriptive message" container_id image_name:lattest

该图像将安装所有东西。

每次遇到这种错误

bash: <command>: command not found
  • 在主机上,该命令已经与 this solution:

    一起工作
    dpkg -S $(which <command>)
    
  • 没有安装该软件包的主机? Try this:

    apt-file search /bin/<command>
    

有时,Docker 中 Linux 的最小安装没有定义路径,因此需要使用 ....

调用 ping
cd /usr/sbin
ping <ip>

我在 debian 10 上使用了下面的语句

apt-get install iputils-ping