OCI运行时执行失败:执行失败:container_linux.go:344:启动容器进程

23

当我运行下面的命令时

$ docker container exec -it nginx1 ping nginx2 

我遇到的错误是:

OCI运行时执行失败:执行失败:container_linux.go:344:启动容器进程导致“exec:\"ping\": 在$PATH中找不到可执行文件”:未知

如何解决这个问题?


4
在构建nginx1镜像时安装ping工具? - Danila Kiver
我在构建过程中没有安装,但是在运行容器后,它提示“exec: "ping": executable file not found in $PATH": unknown”,我在容器内安装了ping,但没有用。 - Jakka rohith
你是如何做到这一点的,以及你尝试验证安装的方式是什么?如果二进制文件已经安装在运行的容器中并且在PATH中,它应该可以工作。 - Danila Kiver
首先,我使用docker exec -it bash container_id进入了容器并安装了包管理器,然后安装了ping。安装成功后,我尝试再次运行以下命令:docker container exec -it nginx1 ping nginx2 - Jakka rohith
您尝试在安装ping后立即直接调用它(不离开shell)了吗?如果是,您是否尝试通过指定二进制文件的完整路径(例如/usr/bin/ping)来执行它? - Danila Kiver
显示剩余2条评论
8个回答

44

在阅读本答案之前,我想提醒您,这是我学习Docker的第二天,可能对您的帮助不是完美的。

当容器中未安装ping包时也可能出现此错误。 下面是我解决问题的方法,进入容器并键入以下命令:

docker container exec -it my_nginx /bin/bash

然后安装ping软件包

apt-get update
apt-get install inetutils-ping
这解决了我的问题。

我在创建新容器时甚至指定了 nginx:latest,但两个容器都明显需要 inetutils-ping 包。哦,我刚意识到它必须是 nginx:alpine 镜像,并且不需要安装 ping。 - Thanapooom Ptjrk

7

请使用带有Alpine镜像的Nginx:

docker container run -d --name my_nginx_name nginx:alpine

docker container run -d --name my_nginx_name2 nginx:alpine

然后尝试使用以下命令进行 ping 测试:

docker container exec -it my_nginx_name ping my_nginx_name2


5

我曾经遇到过同样的问题,并通过访问以下网址解决了它:

docker exec -ti <CONTAINER ID> /bin/sh

这不是对问题的回答。而且,并不是所有的容器都有 /bin/sh,因此你的解决方案并不太通用。 - Yasen
@Yasen /bin/sh 通常指向容器正在运行的 shell 请参见此答案 - lasec0203

3

在容器中安装 ping 实用工具。

docker container exec -it webhost /bin/bash
apt-get update
apt-get install inetutils-ping

docker container exec -it webhost ping new_nginx

非常好的答案,但我遇到了错误:E: 无法打开锁定文件/var/lib/dpkg/lock-frontend - open (13: 权限被拒绝)。我如何在Docker容器内成为超级用户?凭证? - Sold Out
为了成为Docker容器内的root用户,请按以下方式进入: docker exec -u 0 -it containerName bash 即使用用户0(-u 0)规范。 - Sold Out

3

我最近遇到了这个问题。当我们用自定义名称运行一个docker容器,并在名称后面加上一个命令/选项/等,那么这些内容将被作为命令传递给容器。所以,在这里容器尝试在内部查找ping命令,但是找不到。因此,按照上面的答案,您必须在容器内安装 inetutils-ping 并运行命令。


3

尝试这个方法,它对我有效。

# $ docker container exec -it new_nginx bash 
# apt-get update
# apt-get install inetutils-ping

针对容器运行您的命令时,请同时为两者执行此操作

# $ docker container exec -it nginx1 ping nginx2 

    

1

请在两个容器中安装ping,

运行apt-get update命令,

运行apt-get install inetutils-ping命令

然后尝试使用ping命令。


0

当您尝试在docker image中运行未找到的命令时,会报告此错误。请检查ping是否安装在docker image中。


即使它没有安装,我尝试在容器内使用bash安装它,但是它没有起作用。 - Jakka rohith
1
首先运行 apt-get update,然后尝试安装 apt-get install inetutils-ping - Akash Sharma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接