#docker #docker-compose
#docker #docker-compose
Вопрос:
При запуске контейнера docker я получаю следующую ошибку:
standard_init_linux.go:175: exec user process caused "permission denied"
sudo
это не исправляет. У меня есть все разрешения.
docker-compose
таким же образом отображается только сбой контейнера.
Я использую Linux, и Dockerfile
он находится на cifs-ресурсе. Начиная с локально смонтированного диска, все работает.
Ответ №1:
Как намекнуто здесь, файловая система не-exec. Т.е. выполнение скриптов или двоичных файлов оттуда не разрешено. Вы можете проверить это, найдя, например, shellscript, проверив, что для него установлен бит execute с ls -l
, а затем попробуйте запустить его. Кроме того, просмотр параметров монтирования может выявить проблему:
//nas.local/home on /cifs/h type cifs ( <lots of options omitted> , noexec)
Интересно, что команда, которая смонтировала общий ресурс, явно не запрашивала noexec
. Однако монтирование все равно вышло таким образом. Добавление -o exec
к команде монтирования и повторное монтирование исправили это.
Комментарии:
1. нужно ли нам добавлять это в dockerfle? Если нет, не могли бы вы, пожалуйста, сказать мне, куда это поместить? Я новичок в Docker, поэтому могу не разобраться в технических деталях.
2. Ваша проблема не в Docker, а в файловой системе. Если вы создаете CIFS-mount вручную в командной строке, вы добавляете
-o exec
туда. Если он «просто появляется» после загрузки, то вы найдете в файле строку, которая создает ваше монтирование/etc/fstab
. Добавьтеexec
к имеющимся там параметрам. Я надеюсь, что это поможет, потому что я понятия не имею, как описать это лучше. Я просмотрел несколько веб-сайтов, и это, кажется, объясняет это довольно хорошо: putorius.net/mount-windows-share-linux.html
Ответ №2:
Я решил проблему, изменив верхнюю строку в файле train.
Это было
#!/usr/bin/env python
Я изменил его на:
#!/usr/bin/env python3.5
в зависимости от того, какую версию python я установил.
Комментарии:
1. Что такое файл Train?
2. файлом train может быть любой файл, который вы пытаетесь запустить. когда вы выполняете docker run xyz train , train — это файл, который вы пытаетесь запустить.