Невозможно перечислить содержимое вложенного каталога в Docker: в разрешении отказано - PullRequest
0 голосов
/ 03 августа 2020

Я обнаружил, что не могу перечислить содержимое вложенного каталога в контейнере Docker.

Структура файла:

├── Dockerfile
└── foo
    └── bar
        └── baz.txt

Dockerfile:

FROM debian

COPY foo /app/foo

WORKDIR /app

CMD ["ls", "foo/bar"]

Я могу успешно запустить ls foo/bar/ на хост-машине:

$ ls foo/bar/
baz.txt

Но когда я запускаю контейнер, я получаю ошибку «Permission denied».

$ docker build -t foo .

$ docker run foo
ls: cannot open directory 'foo/bar': Permission denied

I не понимаю, почему в разрешении отказано, потому что я являюсь пользователем root в контейнере, а каталог, похоже, имеет соответствующие разрешения:

$ docker run -it foo sh
# whoami
root
# cd foo
# ls -l
total 4
drwxrwxr-x. 2 root root 4096 Aug  3 19:13 bar

Среда:

$ docker --version
Docker version 19.03.8, build afacb8b

Хост-компьютер: Fedora 32

1 Ответ

0 голосов
/ 04 августа 2020

Решение из комментариев:

Проблема была вызвана SE linux, который включен по умолчанию в Fedora.

Отредактируйте /etc/sysconfig/docker, чтобы удалить --selinux-enabled из OPTIONS переменная.

Перезапустить демон docker.

$ sudo systemctl restart docker

Запустить контейнер. Перестраивать образ не нужно.

$ docker run foo
baz.txt
...