簡體   English   中英

Docker,\\“ping\\”:在 $PATH 中找不到可執行文件”:未知

[英]Docker, \“ping\”: executable file not found in $PATH": unknown

我在同一個網絡上有這兩個容器

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

我檢查了垃圾箱,里面沒有 ping

root@b36f350efca1:/bin# ls ping*
ls: cannot access 'ping*': No such file or directory

輸出

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不可用,或其他原因)。

如何檢查 docker 變量 $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 ,至少在我這里有 atm 的容器上),並嘗試解決它。

要打開交互式控制台來檢查/處理容器,請運行$ docker exec -ti <CONTAINER> bash


更新

我檢查了垃圾箱,里面沒有 ping

您可能必須安裝iputils-ping ,請參閱此處的答案,但基本上(假設您的容器基於 Debian 或 Ubuntu 或類似發行版)運行

$ apt-get update
$ apt-get install iputils-ping

首先在容器#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

可能是您的容器沒有ping 使用docker exec -it <Container_Name> bash登錄到該容器,這將打開容器內的 bash。 然后鍵入以下命令。 apt-get update;apt-get install iputils-ping;

不要在 docker 容器運行命令中使用 nginx,因為 nginx 圖像沒有 ping 命令,請使用 nginx:alpine。 nginx:alpine 圖像具有與之關聯的 ping 命令。 示例如下

docker container run --name new_nginx2 -d --network my_app_net nginx:alpine

步驟 -1 docker container exec -it mynginx ping newnginx 如果上述步驟給出錯誤 OCI runtime exec failed: exec failed: container_linux.go:348: 啟動容器進程導致 "exec: \\"ping\\": executable file not found in $PATH ”:未知

步驟-2 docker container exec -it mynginx bash

第 3 步 apt-get 更新

步驟 4 apt-get install iputils-ping

步驟 -4 退出()

Step-5 docker container exec -it mynginx ping newnginx

它會ping。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM