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

时间:2016-10-06 16:33:08

标签: ubuntu docker ping

我有一个运行Ubuntu的Docker容器,我按如下方式执行:

docker run -it ubuntu /bin/bash

然而它似乎没有ping。 E.g。

bash: ping: command not found

我需要安装吗?

似乎缺少一个非常基本的命令。我尝试了whereis ping,但没有报告任何内容。

7 个答案:

答案 0 :(得分:429)

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

Dockerfile:

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

请注意,有关于创建docker镜像的最佳实践,例如清除apt缓存文件等等。

答案 1 :(得分:19)

This是Ubuntu的Docker Hub页面,this是如何创建的。它只有(有些)安装了最小的软件包,因此如果你需要额外的东西,你需要自己安装它。

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

但通常你会创建一个&#34; Dockerfile&#34;建立它:

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查找教程并浏览现有的Dockerfiles以了解他们通常如何做事:)例如,应在apt-get clean && rm -rf /var/lib/apt/lists/*命令之后运行apt-get install来最小化图像大小。

答案 2 :(得分:4)

或者,您可以使用已安装ping的Docker映像,例如busybox

docker run --rm busybox ping SERVER_NAME -c 2

答案 3 :(得分:1)

通常,人们会使用Ubuntu / CentOS的官方映像,但他们没有意识到这些映像是最小的,并且最重要的是没有。

对于Ubuntu,此映像是由Canonical提供的官方rootfs tarball构建的。鉴于它是Ubuntu的最小安装,因此默认情况下,该映像仅包含C,C.UTF-8和POSIX语言环境。

可以在容器上安装net-tools(包括ifconfig,netstat),ip-utils(包括ping)和其他类似curl的东西,可以从容器创建映像,也可以编写Dockerfile来在创建映像时安装这些工具。 / p>

下面是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

该映像将安装所有东西。

答案 4 :(得分:0)

每次您遇到这种错误

bash: <command>: command not found
  • 在具有该命令且已与this solution一起使用的主机上:

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

    apt-file search /bin/<command>
    

答案 5 :(得分:0)

有时候,在Docker中最少安装Linux并没有定义路径,因此有必要使用...来调用ping。

cd /usr/sbin
ping <ip>

答案 6 :(得分:0)

我在debian 10上使用了以下语句

apt-get install iputils-ping