выход службы докера с кодом «Выход 127»: система не может найти указанный путь - PullRequest
1 голос
/ 26 июня 2019

Я использую Windows 10 с PowerShell в качестве командной строки.Я следую простому учебнику , но, к сожалению, я получаю выход службы с кодом Exit 127 с The 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, дают:

front-envoy service_blue service_green service_red`

работает.

Я действительно запутался, каккак решить эту проблему, я видел много статей, но ни одна из них не связана с этим.

Ответы [ 2 ]

1 голос
/ 27 июня 2019

Когда вы видите следующее, первое, что вам нужно сделать, это проверить журнал контейнера выхода, чтобы выяснить, что произошло.

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 клонирует исходный код, измените 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
0 голосов
/ 26 июня 2019

Обычно это происходит в Docker для Mac или Docker для Windows, если вы не выделили достаточно ОЗУ для вашей Docker VM

Проверьте настройки -> расширенные и попробуйте добавить больше ОЗУ.

...