如何解决一个docker容器,一个samba共享和权限问题
以下docker命令:
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共享中创建两个文件夹,但是没有权限在该文件夹“缓存”中创建文件夹。
2020/09/01 16:41:28 [crit] 1752#1752:* 1 mkdir()“ / data / cache / cache / 7d”在读取上游时失败(13:权限被拒绝),客户端:Client- 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/09/01 16:41:28 [crit] 1752#1752:* 2 mkdir()“ / data / cache / cache / c2”失败(13:权限被拒绝),同时读取上游,客户端:Client-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 [crit] 1754#1754:* 3 mkdir()“ / data / cache / cache / 3e”失败(13:权限被拒绝),同时读取上游,客户端:Client-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” 2020/09/01 16:41:28 [crit] 1753#1753:* 5 mkdir()“ / data / cache / cache / 78”失败(13:权限被拒绝),同时读取上游,客户端:Client-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” 2020/09/01 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”
任何建议我在做什么错了吗?
谢谢。
编辑: 我在VM上使用Ubuntu。 Samba-Share属于Synology NAS。
没人知道吗?
解决方法
我相信你可以分两步解决这个问题:
-
使用命令获取您的主机用户 uid 和 gid:
id -u && id -g
-
将 -u 添加到您的运行命令中 [用户名或 UID(格式:
[: ])]
例如。假设您的主机用户有 UID=1000 和 GID=1000,您的 docker run 命令应该是:
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
这样做可以避免 docker 容器和主机之间的大量权限错误。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。