Один док-контейнер, одна общая папка Samba и разрешения

следующая команда докера:

sudocker run --restart unless-stopped --name lancache -v /mnt/steamcache/CacheServer/cache:/data/cache -v /mnt/steamcache/CacheServer/logs:/data/logs -p My-Server-IP:80:80 lancachenet/monolithic:latest

также моя команда монтирования:

sudo mount -t cifs -o username=MYUSERNAME //My-Samba-File-Server-IP/games /mnt/steamcache

Docker может создать две папки в моем общем ресурсе samba, но у него нет разрешения на создание папок в кеше этой папки.

01.09.2020, 16:41:28 [крит] 1752#1752: *1 mkdir() /data/cache/cache/7d не удалось (13: Отказано в доступе) при чтении вверх по течению, клиент: IP-адрес клиента, сервер: , запрос: GET /depot/1/manifest/5928322771446233610/5 HTTP/1.1, восходящий поток: http://155.133.248.29:80/depot/1/manifest/5928322771446233610/5, хост: cache18-ams1.steamcontent.com 2020/ 01.09, 16:41:28 [крит] 1752#1752: *2 mkdir() /data/cache/cache/c2 не удалось (13: Отказано в доступе) при чтении вверх по течению, клиент: IP-клиент, сервер: , запрос: GET /depot/3/manifest/8096513071444961518/5 HTTP/1.1, восходящий поток: http://155.133.248.29:80/depot/3/manifest/8096513071444961518/5, хост: cache18-ams1.steamcontent.com 2020/09/ 01 16:41:28 [крит] 1754#1754: *3 mkdir() /data/cache/cache/3e не удалось (13: Отказано в доступе) при чтении вверх по течению, клиент: IP-клиент, сервер: , запрос: GET / depot/2/manifest/2139852524811213490/5 HTTP/1.1, восходящий поток: http://155.133.248.13:80/depot/2/manifest/2139852524811213490/5, хост: cache2-ams1.steamcontent.com 01.09.2020 16 :41: 28 [крит] 1753#1753: *5 mkdir() /data/cache/cache/78 не удалось (13: Отказано в доступе) при чтении вверх по течению, клиент: IP-адрес клиента, сервер: , запрос: GET /depot/74/manifest /5000716531281502924/5 HTTP/1.1, восходящий поток: http://155.133.248.13:80/depot/74/manifest/5000716531281502924/5, хост: cache2-ams1.steamcontent.com 01.09.2020 16:44:27 [ crit] 1755#1755: *12 mkdir() /data/cache/cache/2b не удалось (13: Отказано в доступе) при чтении вверх по течению, клиент: IP-адрес клиента, сервер: , запрос: GET /appinfo/1042420/sha/c87d5ae3d06609fd093145ed24417160ca271eef .txt.gz HTTP/1.1, восходящий поток: http://95.101.90.177:80/appinfo/1042420/sha/c87d5ae3d06609fd093145ed24417160ca271eef.txt.gz, хост: clientconfig.akamai.steamstatic.com

Любые предложения, что я делаю неправильно?

Спасибо.

РЕДАКТИРОВАТЬ: я использую Ubuntu на виртуальной машине. Samba-Share принадлежит Synology NAS.

Никто не имеет понятия?


person Hades85    schedule 06.09.2020    source источник


Ответы (1)


я считаю, что вы можете решить эту проблему в 2 шага:

  1. Получите uid и gid пользователя вашего хоста с помощью команды:

    идентификатор -u && идентификатор -g

  2. Добавьте -u к выполняемой команде [Имя пользователя или UID (формат: ‹name|uid›[:‹group|gid›])]

Бывший. Допустим, ваш пользователь хоста имеет UID = 1000 и GID = 1000, ваша команда запуска докера должна быть:

docker run \
--restart unless-stopped \
--name lancache \
-v /mnt/steamcache/CacheServer/cache:/data/cache \
-v /mnt/steamcache/CacheServer/logs:/data/logs \
-p My-Server-IP:80:80 \
-u 1000:1000 \
lancachenet/monolithic:latest

Или собрать все вместе:

docker run \
--restart unless-stopped \
--name lancache \
-v /mnt/steamcache/CacheServer/cache:/data/cache \
-v /mnt/steamcache/CacheServer/logs:/data/logs \
-p My-Server-IP:80:80 \
-u "$(id -u):$(id -g)" \
lancachenet/monolithic:latest

Делая это, вы избегаете множества ошибок разрешений между док-контейнером и хостом.

person ProMo    schedule 07.01.2021