Nano Hash - криптовалюты, майнинг, программирование

Команда контейнера '/start.sh' не найдена или не существует, точкой входа в контейнер является сценарий оболочки

Содержание проекта:

rob@work:~/git/proj $ ls
lib     node_modules  props.json    start.sh
app.js  Dockerfile    package.json  README.md

start.sh ..

rob@work:~/git/proj $ cat start.sh 
#/bin/bash

# do things
/some/other/stuff

echo "Starting app .."
node app.js

Dockerfile ..

FROM somewhere.com/dependencyProj
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY . /usr/src/app
COPY props.json /etc/someService.d/props.json
EXPOSE 4101

ENTRYPOINT ["/start.sh"]

Собираем образ докера:

rob@work:~/git/proj $ docker build -t dx/proj:0.0.1 .
Sending build context to Docker daemon 59.99 MB
Step 1 : FROM somewhere.com/dependencyProj
latest: Pulling from dependencyProj
420890c9e918: Already exists 
8ff1af46fe3d: Already exists 
6db3a1c6f4ca: Already exists 
d82a90c4ea1b: Already exists 
f32685681727: Already exists 
797dfb291196: Already exists 
3a713b0b523e: Already exists 
a9c617bff63b: Already exists 
9ab84732ac6e: Already exists 
2a85e0afdd4d: Already exists 
a56b24146ce4: Already exists 
0a91b00da1f7: Already exists 
836b0e7c1105: Already exists 
Digest: sha256:36b7a32bd12b85cbb2fb3203d43807c9b8735d6ceb50d813b76bfe2e5c3ebeb4
Status: Downloaded newer image for somewhere.com/dependencyProj:latest
 ---> 7c52bbbc3feb
Step 2 : RUN mkdir -p /usr/src/app
 ---> Running in aab7cf1f7974
 ---> 250317f63adf
Removing intermediate container aab7cf1f7974
Step 3 : WORKDIR /usr/src/app
 ---> Running in f60088532610
 ---> 60f3d9fe88c4
Removing intermediate container f60088532610
Step 4 : COPY . /usr/src/app
 ---> 004e0a440fb5
Removing intermediate container f247d134d88b
Step 5 : COPY props.json /etc/someService.d/props.json
 ---> 03b48249c94c
Removing intermediate container a3636849765d
Step 6 : EXPOSE 4101
 ---> Running in 0056e5c20264
 ---> 867765176927
Removing intermediate container 0056e5c20264
Step 7 : ENTRYPOINT /start.sh
 ---> Running in 80ae316b0629
 ---> d1e65def77ce
Removing intermediate container 80ae316b0629
Successfully built d1e65def77ce

Запускаем образ докера:

rob@work:~/git/proj $ docker run -d dx/proj:0.0.1
0fd1f8087cc5be3e085454cf99b7a3795b9ce15909b0f416ae39380f93feaa44
docker: Error response from daemon: Container command '/start.sh' not found or does not exist..
24.05.2016

  • Я получаю docker: Error response from daemon: rpc error: code = 2 desc = "oci runtime error: exec format error"., если использую ./start.sh 24.05.2016
  • Вы добавили разрешение на выполнение для start.sh? Попробуйте chmod +x start.sh. 24.05.2016
  • та же ошибка, если я поставлю RUN chmod +x start.sh перед ENTRYPOINT ["./start.sh"] 24.05.2016
  • Ваш шебанг неверен, это #!/bin/bash, а не #/bin/bash. 24.05.2016
  • опечатки! эти 2 изменения решили проблему, если вы хотите добавить ответ, я не приму его. 25.05.2016

Ответы:


1

У вас есть некоторые проблемы:

  • Вы должны использовать ./start.sh для запуска файла start.sh из текущего каталога. /start.sh запустить start.sh в несуществующем корне /.

  • Ваша строка shebang в сценарии start.sh неверна, она должна быть #!/bin/bash.

  • Вы также должны установить права на выполнение для start.sh, запустив chmod +x start.sh.

25.05.2016
  • Мне пришлось изменить окончания строк в скрипте bash с CRLF на LF. С окончаниями строк CRLF я получил ту же ошибку. 18.12.2018
  • потратил несколько часов на это, и вот что случилось со мной, когда мой intellij зафиксировал файл, он преобразовал окончания файлов! 29.03.2019
  • @Gnagy: это стоит ответа. Так же было и на моем аппарате. 31.07.2019
  • @Gnagy СПАСИБО, это помогло мне. Это всегда мелочи, да. 11.03.2020
  • @Gnagy ВАУ! Это тоже было! 27.12.2020
  • @Gnagy, спасибо! 18.03.2021

  • 2

    В Windows при создании образа докера я также получал ту же ошибку после создания образа, что сценарий оболочки отсутствует ... путь и шебанг также были правильными.

    Позже я где-то читал, что это может быть связано с проблемой кодировки. Я просто открыл файл в возвышенном редакторе, а затем ..VIEW-> Line Endings-> UNIX, просто сохранил файл и перестроил изображение. Все работало нормально.

    Я получал эту ошибку, когда собирал изображение из окон.

    Другой вариант:

    Иногда мы забывали вручную изменить формат строки. Итак, что мы можем сделать, так это добавить этот оператор Run перед EntryPoint в dockerfile. Он закодирует файл в формате LF.

     RUN sed -i 's/\r$//' $app/filename.sh  && \  
            chmod +x $app/filename.sh
    
    ENTRYPOINT $app/filename.sh
    
    31.08.2017
  • Это действительно сработало, спасибо! Для других имейте в виду, что сам файл сценария должен использовать окончания строк в стиле LF (это означает, что строки должны использовать \n в качестве концов строк вместо \r\n). 02.10.2017
  • Omg ... столько раз терялся из-за этого ... Я клонировал репозиторий git и забыл, что Git для Windows преобразует LF в CRLF (и делает обратное, когда вы нажимаете). 22.10.2017
  • Это был правильный ответ для меня (запуск Docker для Windows), где я использовал VS Code для изменения файла «.sh», забыв, что он сохранит его с окончаниями строк CR-LF. Для тех, у кого нет Sublime Text, вы можете использовать Notepad ++, чтобы изменить их обратно на окончания строк Linux. 25.04.2018
  • Благодарю вас! Это также было моей проблемой. К счастью, VSCode позволяет легко менять окончания строк, но какое-то время это меня сбивало с толку. Странное сообщение об ошибке. Он существует, я предполагаю, что получу сообщение об ошибке filename.sh: corrupted или что-то в этом роде. Вместо этого сообщение об ошибке было does not exist, что меня сбило с толку. 29.11.2018
  • Моя проблема была такой же. Каждый раз в моем файле докеров, когда я копирую системный файл Linux, такой как crontab или любой скрипт, в конце каждой строки добавлялись символы ^m. Я могу добавить команду dos2unix в dockerfile после запуска команды копирования. Есть ли другая надежная душа, которую я могу использовать? 24.02.2021
  • Это решило мою проблему. Это начало внезапно не работать, я потратил на это часы. Вызвано однократным использованием неправильного редактора при сохранении его в стиле Windows. Спасибо. 14.04.2021
  • Несмотря на то, что мой файл сценария был локально с окончаниями строк в стиле LF, настройка в нашем репозитории Git преобразовала файл в CRLF на сервере сборки, что привело к сбою сценария в контейнере Docker. +1 за включение исправления sed, которое я теперь буду использовать. 28.06.2021
  • Новые материалы

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

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..