Моя проблема заключается в следующем:
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
, но я не хочу этого делать.