Я установил свежий Fedora Server 22. Во время установки я выбрал вариант предварительной установки Docker. Я активировал Docker с помощью Cockpit и установил новый контейнер в командной строке:
# docker run -d -h plex --name="plex" -v /etc/docker/plex:/config -v /tank:/data -p 32400:32400 timhaak/plex
При попытке запустить его получаю ошибку:
+ GROUP=plextmp
+ mkdir -p /config/logs/supervisor
mkdir: cannot create directory ‘/config/logs’: Permission denied
Я проверил детали контейнера:
...
"Volumes": {
"/config": "/etc/docker/plex",
"/data": "/tank"
...
"VolumesRW": {
"/config": true,
"/data": true
...
и каталог существует:
# file /etc/docker/plex
/etc/docker/plex: directory
вроде все нормально.
Сначала я подумал, что проблема в самом контейнере, поэтому попробовал и другие контейнеры. Я сталкиваюсь с одной и той же проблемой с каждым из них. Они не могут создавать папки или файлы (иногда даже не читать их). В документации докера («Управление данными в контейнерах») есть очень простой пример создания нового контейнера, который просто открывает оболочку и монтирует том с хоста:
# docker run --rm -it -v /etc/docker/test:/vol ubuntu /bin/bash
Попытка коснуться файла в / test приводит к ошибке отказа в разрешении.
Что мне не хватает?
В моем конкретном случае проблема была в SELinux. После установки «разрешающего» я смог использовать контейнеры.
(может быть не лучшим решением, но работает, пока я не настрою разрешения SELinux соответствующим образом)
Обновление: вот короткое сообщение в блоге Дэна Уолша, указывающее на возможные проблемы, которые могут возникнуть при использовании Docker Volumes и SELinux:
http://www.projectatomic.io/blog/2015/06/using-volumes-with-docker-can-cause-problems-with-selinux/