Разрешения каталога тома монтирования Docker для пользователя без полномочий root с использованием файла dockerfile

У меня есть файл докеров с точкой входа, которая запускает банку приложения Java в процессе оболочки. Я установил USER Nobody в файле докеров перед точкой входа, чтобы убедиться, что оболочка точки входа выполняется никем, а не пользователем root. Определение задачи для контейнера в AWS ECS учитывает параметры тома и подключения. Поэтому в идеале во время выполнения контейнера /var/log/applogs на хосте монтируется в контейнер с тем же путем. Но что происходит, так это то, что, поскольку пользовательский контекст переключается с root на none, поэтому никто, который запускает контейнер (выполняет точку входа), не имеет права на запись в каталог /var/log/applogs/ в контейнере. Таким образом, приложение не может создать файл журнала в контейнере. Что я вижу, так это то, что хост ec2 /var/log/applogs прекрасно монтируется в контейнере, который запускается пользователем Nobody, но, поскольку у пользователя Nobody отсутствуют права на запись по этому пути в контейнере, следовательно, он не может писать журнал приложения здесь . Как правильно исправить это либо в файле докеров, либо в чем-то еще?


person Ashley    schedule 15.08.2019    source источник


Ответы (1)


Вы можете попробовать это...

Удалите запись USER nobody из Dockerfile и измените свою точку входа на следующий скрипт:

#!/bin/bash

# change ownership to user=nobody, group=nobody
chown -R nobody:nobody /var/log/applogs

# open with sudo a new shell as user nobody and call your application
sudo -u nobody /bin/bash -c "java -jar /path/to/your/application.jar"

# alternative
# open with su a new shell as user nobody and call your application
# su -s /bin/bash -c "java  -jar /path/to/your/application.jar" nobody
person UtLox    schedule 15.08.2019