Docker разрешения на запись для подключенного общего диска cifs - PullRequest
0 голосов
/ 31 марта 2020

Моя проблема заключается в следующем:
1. Я создаю том docker с общим диском windows:
docker volume create --driver local --opt type=cifs --opt device=//{address}/logs --opt o=user=username,password=pass logsdir
2. Создаем файл Docker-файла wildfly:

FROM jboss/wildfly:8.1.0.Final
ADD my_app.war /opt/jboss/wildfly/standalone/deployments/
RUN /opt/jboss/wildfly/bin/add-user.sh admin admin --silent
CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0"]
Сборка Docker image Запуск docker контейнера с томом logsdir, сопоставленным с /opt/jboss/wildfly/standalone/logs:
docker run -v logsdir:/opt/jboss/wildfly/standalone/logs -it wildfly_image

Теперь, когда я попаду в контейнер I Я вошел в систему как пользователь jboss, и я не могу создать файл в каталоге /opt/jboss/wildfly/standalone/logs.

$ docker exec -it wildfly_image bash
[jboss@9edd17ca9c50 ~]$ ls -ld wildfly/standalone/logs
drwxrwxrwx 2 54321 54322 0 Mar 31 12:40 wildfly/standalone/logs
[jboss@9edd17ca9c50 ~]$ cd wildfly/standalone/logs/
[jboss@9edd17ca9c50 logs]$ touch test
touch: cannot touch 'test': Permission denied

Когда я ввожу изображение как пользователь root, все в порядке:

$ docker exec -it -u -0 wildfly_image bash
[root@9edd17ca9c50 jboss]# ls -ld wildfly/standalone/logs
drwxrwxrwx 2 54321 54322 0 Mar 31 12:40 wildfly/standalone/logs
[root@9edd17ca9c50 jboss]# cd wildfly/standalone/logs/
[root@9edd17ca9c50 logs]# touch test
[root@9edd17ca9c50 logs]# ls test
test

Как я могу предоставить пользователю jboss те же права на каталог /opt/jboss/wildfly/standalone/logs, что и у root пользователя? Альтернативой может быть использование USER root в Dockerfile и запуск моего приложения в качестве пользователя root, но я не хочу этого делать.

...