Ответ 1
образ vault:latest
не содержит /bin/bash
, который вы пытаетесь вызвать с помощью своего shebang #!/bin/bash
. Вы должны либо изменить это на #!/bin/sh
, либо полностью удалить shebang из вашего script.
Мой ENTRYPOINT
script не выполняет и не бросает standard_init_linux.go:175: exec user process caused "no such file or directory"
. Почему так?
$ docker build -t gilani/trollo . && docker run gilani/trollo
Sending build context to Docker daemon 126 kB
Step 1 : FROM vault:latest
---> 1f127f53f8b5
Step 2 : MAINTAINER Amin Shah Gilani <[email protected]>
---> Using cache
---> 86b885ca1c81
Step 3 : COPY vaultConfig.json /vault/config
---> Using cache
---> 1a2be2fa3acd
Step 4 : COPY ./docker-entrypoint.sh /
---> Using cache
---> 0eb7c1c992f1
Step 5 : RUN chmod +x /docker-entrypoint.sh
---> Running in 251395c4790f
---> 46aa0fbc9637
Removing intermediate container 251395c4790f
Step 6 : ENTRYPOINT /docker-entrypoint.sh
---> Running in 7434f052178f
---> eca040859bfe
Removing intermediate container 7434f052178f
Successfully built eca040859bfe
standard_init_linux.go:175: exec user process caused "no such file or directory"
Dockerfile:
FROM vault:latest
MAINTAINER Amin Shah Gilani <[email protected]>
COPY vaultConfig.json /vault/config
COPY ./docker-entrypoint.sh /
RUN chmod +x /docker-entrypoint.sh
ENTRYPOINT ["/docker-entrypoint.sh"]
docker-entrypoint.sh:
#!/bin/bash
echo 'Hello World!'
$ docker build -t gilani/trollo . && docker run gilani/trollo
Sending build context to Docker daemon 126 kB
Step 1 : FROM vault:latest
---> 1f127f53f8b5
Step 2 : MAINTAINER Amin Shah Gilani <[email protected]>
---> Using cache
---> 86b885ca1c81
Step 3 : COPY vaultConfig.json /vault/config
---> Using cache
---> 1a2be2fa3acd
Step 4 : ENTRYPOINT echo 'hello world'
---> Using cache
---> ef5792a1f252
Successfully built ef5792a1f252
'hello world'
Dockerfile:
FROM vault:latest
MAINTAINER Amin Shah Gilani <[email protected]>
COPY vaultConfig.json /vault/config
ENTRYPOINT ["echo", "'hello world'"]
образ vault:latest
не содержит /bin/bash
, который вы пытаетесь вызвать с помощью своего shebang #!/bin/bash
. Вы должны либо изменить это на #!/bin/sh
, либо полностью удалить shebang из вашего script.
Я срывал свои волосы с проблемой, очень похожей на это. В моем случае /bin/ bash DID существует. Но на самом деле проблема заключалась в окончаниях строк Windows.
В моем случае репозиторий git имел точку входа script с окончанием строки Unix (\n). Но когда хранилище было проверено на машине Windows, git решил попробовать и быть умным и заменить окончание строк в файлах концами окон (\ r\n).
Это означало, что shebang не работал, потому что вместо поиска /bin/ bash он искал /bin/ bash\r
Решение для меня состояло в том, чтобы отключить автоматическое преобразование git: git config - global core.autocrlf input Затем снова проверьте репозиторий и перестройте
Еще одна полезная информация здесь: Как изменить настройки окончания строки и здесь http://willi.am/blog/2016/08/11/docker-for-windows-dealing-with-windows-line-endings/
Не видя своего изображения, моя первоначальная идея заключается в том, что у вас нет /bin/ bash на вашем изображении. Изменение первой строки вашего docker -entrypoint.sh на:
#!/bin/sh
скорее всего, решит его.
Другая возможность:
Убедитесь, что файл не сохранен с окончанием строки Windows (CRLF). Если это так, сохраните его с окончанием строки Unix (LF), и он будет найден.
Мое дело было в том, что альпийское изображение, которое я использовал, не было с bash вообще...
RUN apk-install bash
сделал трюк, очевидно,