我在同一个网络上有这两个容器
docker inspect my_app_net
[
{
"Name": "my_app_net",
"Id": "e136b758e8009e0361168aa0ead14ec85973c8d4f93e65122c22a2ff18f5e61f",
"Created": "2018-03-22T21:11:51.781623693+01:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.19.0.0/16",
"Gateway": "172.19.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"a966584cd491caff18b25fa347b738a0853e5195ac517b5fb26bb019a271fc10": {
"Name": "new_pizd",
"EndpointID": "fdbacbbd564aeacccc57367dd082232e0498976ca485597b6ba8f6c82a0d4240",
"MacAddress": "02:42:ac:13:00:03",
"IPv4Address": "172.19.0.3/16",
"IPv6Address": ""
},
"b36f350efca1f2e79bef8027a32f992021091fdd701e4d55d98af78984072150": {
"Name": "new_nginx2",
"EndpointID": "38731d2618aba0a7c63debd3b30a4c9b530d83a4fddbda97cdd2498298007120",
"MacAddress": "02:42:ac:13:00:02",
"IPv4Address": "172.19.0.2/16",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {}
}
]
当我尝试从第一个
ping第二个时docker container exec -it new_pizd ping new_nginx2
OCI runtime exec failed: exec failed: container_linux.go:348: starting container process caused "exec: \"ping\": executable file not found in $PATH": unknown
这很奇怪。 如何检查docker变量$ PATH?它引用了哪个可执行文件? 编辑
建议的答案要求echo PATH,但它与我的Ubuntu shell相同
docker exec -ti new_nginx2 echo $PATH
/home/milenko/eclipse:/home/milenko/miniconda3/bin:/home/milenko/bin:/home/milenko/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
和
milenko@milenko-System-Product-Name:~$ docker exec -ti new_nginx2 bash
root@b36f350efca1:/# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
我已经检查了bin,里面没有ping
root@b36f350efca1:/bin# ls ping*
ls: cannot access 'ping*': No such file or directory
答案 0 :(得分:12)
输出
OCI runtime exec failed: exec failed: container_linux.go:348: starting container process caused "exec: \"ping\": executable file not found in $PATH": unknown
表示找不到ping
命令($PATH
配置错误,或ping
不可用,或其他内容。)
如何检查泊坞变量$ PATH?
运行 ,它应输出如下内容$ docker exec -ti <CONTAINER> echo $PATH
修改:应为$ docker exec -ti <CONTAINER> bash -c 'echo "$PATH"'
/home/user/.bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
$PATH
是在* nix shell中设置的环境变量,它包含查找可执行文件的目录。
它引用哪个可执行文件?
正如错误输出中所述,ping
可执行文件。一旦你知道了$PATH
的内容,就可以检查问题是什么(ping
应该在/bin
,至少在我这里的容器上),并尝试解决它
要打开交互式控制台以检查/处理容器,请运行$ docker exec -ti <CONTAINER> bash
。
<强>更新强>
我已经检查了bin,里面没有ping
您可能必须安装iputils-ping
,请参阅答案here,但基本上(假设您的容器基于Debian或Ubuntu或类似版本)运行
$ apt-get update
$ apt-get install iputils-ping
答案 1 :(得分:3)
首先在容器#1中输入bash
docker container exec -it CONTAINER bash
在bash中,键入
apt update
然后
apt install iputils-ping
然后
exit
然后键入ping命令,它应该可以正常工作
例如docker container exec -it new_pizd ping new_nginx2
答案 2 :(得分:3)
可能是您的容器没有 ping 。使用docker exec -it <Container_Name> bash
登录到该容器,这将打开容器内的bash。然后键入以下命令。
apt-get update;apt-get install iputils-ping;
答案 3 :(得分:0)
不要在docker容器运行命令中使用nginx,因为nginx映像没有ping命令,请使用nginx:alpine。 nginx:alpine图像具有与之关联的ping命令。示例如下
docker container run --name new_nginx2 -d --network my_app_net nginx:alpine
答案 4 :(得分:0)
步骤-1 docker容器exec -it mynginx ping newnginx 如果以上步骤给出错误,则OCI运行时exec失败:exec失败:container_linux.go:348:启动容器进程导致“ exec:\” ping \”:在$ PATH中找不到可执行文件”:未知
步骤-2 docker容器exec -it mynginx bash
第3步 apt-get更新
第4步 apt-get install iputils-ping
步骤-4 退出()
第5步 docker容器exec -it mynginx ping newnginx
它将ping通。