Как предоставить разрешениям записи /chmod в Docker-контейнере на сопоставленный том?
У меня есть NAS-устройство Synology, в котором есть поддержка докеров, и я хотел запустить на нем несколько контейнеров докеров (я новичок в Docker). Например pocketmine-pm (но я думаю, что у меня есть проблема записи и с другими контейнерами).
Я создал том на хосте и отобразил это в настройках контейнера. (И в настройках док-станции Synology для сопоставления томов я не нажимал "только для чтения").
Согласно Dockerfile, внутри контейнера создается новый пользователь pocketmine, и этот пользователь используется для запуска сервера. Кажется, что у пользователя есть ID 1000 (первый UID для новых пользователей Linux). Контейнер также использует скрипт Entrypoint.sh для запуска сервера.
Изначально контейнер не мог записывать файлы в сопоставленный каталог. Мне пришлось SSH в хост "chown" каталог для UID 1000:
sudo chown 1000:1000 /volXy/docker/pocketminemp -R
После этого архив может быть загружен и распакован.
К сожалению, я не смог подключиться к серверу с моего устройства iOS. Сервер указан как "онлайн", но соединение не устанавливается без какого-либо специального сообщения. Затем я проверил журналы контейнера и увидел следующие записи (не уверен, действительно ли это мешает соединению, но я попробую):
[*] Everything done! Run ./start.sh to start PocketMine-MP
chown: changing ownership of '/pocketmine/entrypoint.sh': Operation not permitted
chown: changing ownership of '/pocketmine/server.properties.original': Operation not permitted
Loading pocketmine.yml...
Судя по всему, контейнер не может создать файл, который был ранее загружен.
Кто-нибудь знает, что можно сделать, чтобы это исправить? Нужно ли мне chmod
сопоставленный объем и зачем мне нужно chown
каталог с UID 1000 (пользователь, который на самом деле не существует на хосте) - не существует ли более элегантного способа исправить разрешения?
1 ответ
Когда вы запустите контейнер, вы сможете использовать --user="uid:gid"
флаг для указания пользователя, от которого вы хотите запустить контейнер.