Я использую Docker 1.4.1 на Ubuntu 14.04.1 LTS с ядром 3.13.0-4.Невозможно изменить владельца каталога тонера Docker для пользователя без полномочий root
Рассмотрим следующий пример Dockerfile
FROM debian:wheezy
VOLUME /var/myvol
# RUN mkdir /var/myvol
# copy content to volume
ADD foo /var/myvol/foo
# create user, and make it new owner of directory
RUN useradd nonroot \
&& chown -R nonroot:nonroot /var/myvol/ \
&& ls -al /var/myvol
# switch to new user
USER nonroot
# remove directory owned by user
RUN ls -al /var/myvol && rm /var/myvol/foo && ls -al /var/myvol
и построить его с
touch foo
docker build -t test .
затем полученный выход
Step 0 : FROM debian:wheezy
---> c90d655b99b2
Step 1 : VOLUME /var/myvol
---> Running in d3bc83df9451
---> b860e18186d8
Removing intermediate container d3bc83df9451
Step 2 : ADD foo /var/myvol/foo
---> aded36dba841
Removing intermediate container db5dd1b08958
Step 3 : RUN useradd nonroot && chown -R nonroot:nonroot /var/myvol/ && ls -al /var/myvol
---> Running in 148941cb7858
total 8
drwxr-xr-x 2 nonroot nonroot 4096 Feb 6 09:55 .
drwxr-xr-x 13 root root 4096 Feb 6 09:55 ..
-rw-rw-r-- 1 nonroot nonroot 0 Feb 6 09:30 foo
---> 144e4ff90439
Removing intermediate container 148941cb7858
Step 4 : USER nonroot
---> Running in 924f317b6718
---> 345c1586c69f
Removing intermediate container 924f317b6718
Step 5 : RUN ls -al /var/myvol && rm /var/myvol/foo && ls -al /var/myvol
---> Running in 16c8c2349f27
total 8
drwxr-xr-x 2 root root 4096 Feb 6 09:55 .
drwxr-xr-x 13 root root 4096 Feb 6 09:55 ..
-rw-rw-r-- 1 root root 0 Feb 6 09:30 foo
rm: cannot remove `/var/myvol/foo': Permission denied
INFO[0000] The command [/bin/sh -c ls -al /var/myvol && rm /var/myvol/foo && ls -al /var/myvol] returned a non-zero code: 1
Если бы я заменить строку VOLUME с комментариями одного ниже, он работает отлично. Что действительно странно, так это вывод ls -al
: в то время как первый говорит, что владелец был nonroot, второй выводит владельца как корень, поэтому команда chown
кажется как-то отброшена или разрешения сброшены после переключения на новый пользователь.
Я понимаю точные объемы докеров? Разрешено ли только root разрешать работать с ними, или это может быть ошибка, о которой я должен сообщить?
[Редактировать]
То, что я хочу добиться того, чтобы использовать объем, хранение данных для контейнерной службы. Эта служба не требуется для запуска от имени root (и поэтому я бы предпочел использовать пользователя без полномочий root), но -, необходимый для удаления каталогов и файлов, которые больше не нужны.