«Операция не разрешена» из док-контейнера, зарегистрированного как root - PullRequest
0 голосов
/ 21 октября 2019

Мне нужна ваша помощь, чтобы понять мою проблему.

Я обновил свой macintosh с Catalina на прошлой неделе, затем я обновил Docker для Mac.

После этих обновлений у меня возникли проблемы с правами собственности на общий доступ. тома.

Я могу воспроизвести на небольшом примере. Я просто создаю небольшой docker-compose, который создает контейнер nginx. У меня есть папка src с файлом PHP, например, «src / index.php».

Я собираю контейнер и запускаю его. Затем я захожу в / app / www / mysrc (общий том) и записываю ленту "ls -la", чтобы проверить, в порядке ли index.php, и я получаю:

ls: cannot open directory '.': Operation not permitted

Вот простой docker-composefile: docker-compose.yml:

version: "3"

services:
  test-nginx:
    restart: always
    image: 'nginx:1.17.3'
    ports:
      - "8082:80"
    volumes:
      - ./src:/app/www/mysrc

Когда я собираю и запускаю контейнер, я получаю:

$ docker-compose exec test-nginx sh
# cd /app/www
# ls -la
total 8
drwxr-xr-x 3 root root 4096 Oct 21 07:58 .
drwxr-xr-x 3 root root 4096 Oct 21 07:58 ..
drwxr-xr-x 3 root root   96 Oct 21 07:51 mysrc
# cd mysrc
# ls -la
ls: cannot open directory '.': Operation not permitted
# whoami
root

Итак, мой сервер nginx не работает, потому что nginx не может получить доступк исходным файлам.

Спасибо за помощь.

1 Ответ

2 голосов
/ 21 октября 2019

Если это работало до обновления Catalina, проблема связана с новыми разрешениями, запрошенными Catalina.

Теперь macOS запрашивает разрешения для всего, даже для доступа к каталогу. Поэтому, возможно, у вас было уведомление о предоставлении Docker для Mac разрешения на доступ к общей папке, вы не предоставили его, и теперь вы сталкиваетесь с результатами такого действия.

Чтобы предоставить привилегии сейчас, перейдите наСистемные настройки> Безопасность и конфиденциальность> Файлы и папки и добавьте Docker для Mac и ваш общий каталог.

...