docker не может запустить контейнер: «отказано в разрешении»

#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 — это файл, который вы пытаетесь запустить.