У меня полный рот комментариев, запущенных внутри контейнера Docker с включенными пространствами имен.
Рот загружается на мою веб-страницу, но я не могу оставлять комментарии. В журнале Docker я получаю следующее сообщение об ошибке, а также ошибку 500
в консоли инструментов dev.
attempt to write a readonly database
[GIN] 2018/12/16 - 11:57:23 | 500 | 1.956915ms | 10.0.0.0 | POST /v1/comments
Внутри контейнера с полным пространством имен включено , я замечаю, что config.json и файл базы данных заданы как пользователь none.
/app # ls -la /app/data
total 40
drwxr-xr-x 2 nobody nobody 4096 Dec 15 21:48 .
drwxr-xr-x 1 root root 4096 Aug 27 16:25 ..
-rw-r--r-- 1 nobody nobody 1460 Dec 16 11:55 config.json
-rw-r--r-- 1 nobody nobody 24576 Dec 15 21:48 mouthful.db
Если я запускаю mouthful с пространствами имен отключен (с помощью --userns = host) mouthful запускается нормально, и я могу оставлять комментарии.
Внутри контейнера с отключенными пространствами имен права доступа к файлам установлены как root.
/app # ls -la /app/data
total 40
drwxr-xr-x 2 root root 4096 Dec 16 12:20 .
drwxr-xr-x 1 123000 123000 4096 Aug 27 16:25 ..
-rw-r--r-- 1 root root 1460 Dec 16 12:18 config.json
-rw-r--r-- 1 root root 24576 Dec 16 12:20 mouthful.db
Проблема в том, что процесс на хосте также установлен как root.
ps au | grep [b]in/sh
root 8420 0.5 0.0 1560 516 pts/0 Ss+ 12:24 0:00 /bin/sh
Я считаю, что это риск для безопасности, потому что кому-то легче получить root-доступ к хосту.
Итак, как мне заставить sqlite3 работать с комментариями Mouthful с включенными пространствами имен Docker?