пятница, 3 февраля 2017 г.

Permission denied в Docker-volume

При монтировании тома в Docker-контейнере столкнулся с проблемой, что в контейнере нет доступа к смонтированному каталогу.
# docker run --name=nginx -d -v /sys/fs/cgroup:/sys/fs/cgroup:ro -v /var/lib/docker/volumes/nginx:/var/log/nginx -p 80:80 local/c7-nginx
# docker exec -it nginx bash
# ls /var/log/nginx/access.log 
ls: cannot access /var/log/nginx/access.log: Permission denied

Проблема оказалась в контроле доступов SELinux, который не позволял для контейнеров расшаривать файлы.
Тут можно почитать об этом: https://habrahabr.ru/company/kingservers/blog/209644/

Решение, отключить SELinux:
# echo SELINUX=disabled > /etc/selinux/config
# SELINUXTYPE=targeted >> /etc/selinux/config
# setenforce 0

Либо дать соответствующие права для каталога:
# chcon -Rt svirt_sandbox_file_t /var/lib/docker/volumes/nginx/

Проверка:
# docker stop nginx ; docker start nginx
# docker exec -it nginx bash
# ls /var/log/nginx/access.log
/var/log/nginx/access.log