【问题标题】:docker's service exit with code 'Exit 127' : The system cannot find the path specifieddocker's service exit with code 'Exit 127' : 系统找不到指定的路径
【发布时间】:2019-06-26 06:20:18
【问题描述】:

我正在使用 Windows 10,将 powershell 作为命令行。 我正在关注一个简​​单的tutorial,但不幸的是,我正在使用代码Exit 127The system cannot find the path specified. 获得服务退出

运行命令后:

docker-compose ps
The system cannot find the path specified.
                 Name                               Command                State                              Ports
--------------------------------------------------------------------------------------------------------------------------------------------
httproute-simple-match_front-envoy_1     /docker-entrypoint.sh /bin ...   Up         10000/tcp, 0.0.0.0:8000->80/tcp, 0.0.0.0:8001->8001/tcp
httproute-simple-match_service_blue_1    /bin/sh -c /usr/local/bin/ ...   Exit 127
httproute-simple-match_service_green_1   /bin/sh -c /usr/local/bin/ ...   Exit 127
httproute-simple-match_service_red_1     /bin/sh -c /usr/local/bin/ ...   Exit 127

而其他 docker 命令像

docker-compose ps --service 给出:

前特使 服务蓝 service_green service_red`

有效。

我真的很困惑如何解决它,我看过很多文章但没有一篇与此相关。

【问题讨论】:

    标签: docker proxy docker-compose envoyproxy


    【解决方案1】:

    看到next的时候,首先要做的就是查看exit container的日志,看看到底发生了什么。

    docker-compose ps
    The system cannot find the path specified.
                     Name                               Command                State                              Ports
    --------------------------------------------------------------------------------------------------------------------------------------------
    httproute-simple-match_front-envoy_1     /docker-entrypoint.sh /bin ...   Up         10000/tcp, 0.0.0.0:8000->80/tcp, 0.0.0.0:8001->8001/tcp
    httproute-simple-match_service_blue_1    /bin/sh -c /usr/local/bin/ ...   Exit 127
    httproute-simple-match_service_green_1   /bin/sh -c /usr/local/bin/ ...   Exit 127
    httproute-simple-match_service_red_1     /bin/sh -c /usr/local/bin/ ...   Exit 127
    

    然后,如果你像下一个一样检查出口容器的日志,你会发现错误:

    C:\test\envoy-proxy-demos\httproute-simple-match>docker logs httproute-simple-match_service_red_1
    /bin/sh: /usr/local/bin/start_service.sh: not found
    

    当你看到这个时,很可能是因为 windows 上的文件格式与 linux 不兼容。对于您的方案,要使所有工作正常进行,您需要执行以下操作:

    1. git clone源码后,修改envoy-proxy-demos/apps/service.py,在该文件开头添加#!/usr/bin/python3

    2. 在git-bash的帮助下,输入envoy-proxy-demos/apps,将以下文件格式从dos改为unix,如下:

      $ dos2unix start_service.sh service.py
      dos2unix: converting file start_service.sh to Unix format...
      dos2unix: converting file service.py to Unix format...
      
    3. 最后,构建并开始:

      docker-compose up --build -d
      

      注意:如果您过去已经执行过上述命令,您可能仍然使用构建的缓存,因此您的更改可能不会生效,如果这是您的事情,请执行下一步:

      docker-compose build --no-cache
      docker-compose up --build -d
      

    然后,您可以在完成上述命令后看到所有容器:

                     Name                               Command               State                            Ports
    -----------------------------------------------------------------------------------------------------------------------------------------
    httproute-simple-match_front-envoy_1     /docker-entrypoint.sh /bin ...   Up      10000/tcp, 0.0.0.0:8000->80/tcp, 0.0.0.0:8001->8001/tcp
    httproute-simple-match_service_blue_1    /bin/sh -c /usr/local/bin/ ...   Up      10000/tcp, 80/tcp
    httproute-simple-match_service_green_1   /bin/sh -c /usr/local/bin/ ...   Up      10000/tcp, 80/tcp
    httproute-simple-match_service_red_1     /bin/sh -c /usr/local/bin/ ...   Up      10000/tcp, 80/tcp
    

    【讨论】:

    • 天哪!你是个储蓄者。非常感谢。
    • 我有一个小疑问:您告诉的上述过程在启动时将#!/usr/bin/python3添加到文件service.py中,那么如果我们在Java中使用不同语言示例进行服务,如何处理它.另外,dos2unix start_service.sh service.py 命令是否始终适用于每种服务,或者您告诉的上述过程特定于 python 服务?
    • java运行类字节码,不需要#! dos2unix 只是将 windows \r\n 更改为 linux \n ,也用于文本文件,不需要像 java 类文件这样的二进制文件
    【解决方案2】:

    如果您没有为 Docker VM 分配足够的 RAM,通常会在 Docker for Mac 或 Docker for Windows 上发生这种情况

    检查首选项 -> 高级并尝试添加更多 RAM。

    【讨论】:

    • 我添加了更多内存,但现在当我运行docker-compose ps 时,我得到The system cannot find the path specified
    • 是的,它正在运行,我可能第一次错过了,但早些时候我也得到了同样的The system cannot find the path specified
    猜你喜欢
    • 2021-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-23
    • 2018-12-12
    • 2016-04-23
    • 2017-01-04
    相关资源
    最近更新 更多