docker - Samba Share .pid 权限问题
问题描述
我会尽量精简我的问题。
这是我所拥有的:
- 树莓派上的 sambashare 文件夹
- 一些树莓派上的 kubernetes 集群
- kubernetes 自定义插件挂载 fstab https://github.com/fstab/cifs
我正在尝试做的事情:
- 以正确的权限在容器上保留一个文件夹
所以这就是问题所在。将文件夹安装到容器上工作并生成文件,包括失败的 .pid 文件,它告诉我rw
权限有效。
[v3.0.2.4552] System.UnauthorizedAccessException: Access to the path '/config/radarr.pid' is denied.
---> System.IO.IOException: Permission denied
--- End of inner exception stack trace ---
at System.IO.FileStream.WriteNative(ReadOnlySpan`1 source)
at System.IO.FileStream.FlushWriteBuffer()
at System.IO.FileStream.Dispose(Boolean disposing)
at System.IO.Stream.Close()
at System.IO.StreamWriter.CloseStreamFromDispose(Boolean disposing)
at System.IO.StreamWriter.Dispose(Boolean disposing)
at System.IO.TextWriter.Dispose()
at System.IO.File.WriteAllText(String path, String contents)
at NzbDrone.Common.Processes.PidFileProvider.Write() in D:\a\1\s\src\NzbDrone.Common\Processes\PidFileProvider.cs:line 37
[Fatal] ConsoleApp: EPIC FAIL!
[v3.0.2.4552] NzbDrone.Common.Exceptions.RadarrStartupException: Radarr failed to start: Unable to write PID file /config/radarr.pid
---> System.UnauthorizedAccessException: Access to the path '/config/radarr.pid' is denied.
---> System.IO.IOException: Permission denied
--- End of inner exception stack trace ---
at System.IO.FileStream.WriteNative(ReadOnlySpan`1 source)
at System.IO.FileStream.FlushWriteBuffer()
at System.IO.FileStream.Dispose(Boolean disposing)
at System.IO.Stream.Close()
at System.IO.StreamWriter.CloseStreamFromDispose(Boolean disposing)
at System.IO.StreamWriter.Dispose(Boolean disposing)
at System.IO.TextWriter.Dispose()
at System.IO.File.WriteAllText(String path, String contents)
at NzbDrone.Common.Processes.PidFileProvider.Write() in D:\a\1\s\src\NzbDrone.Common\Processes\PidFileProvider.cs:line 37
--- End of inner exception stack trace ---
at NzbDrone.Common.Processes.PidFileProvider.Write() in D:\a\1\s\src\NzbDrone.Common\Processes\PidFileProvider.cs:line 42
at Radarr.Host.Bootstrap.Start(StartupContext startupContext, IUserAlert userAlert, Action`1 startCallback) in D:\a\1\s\src\NzbDrone.Host\Bootstrap.cs:line 37
at NzbDrone.Console.ConsoleApp.Main(String[] args) in D:\a\1\s\src\NzbDrone.Console\ConsoleApp.cs:line 41
/config/radarr.pid
从容器内生成,因此它绝对可以访问rw
它,所以我猜Unable to write PID file /config/radarr.pid
消息是不正确的,它可能与执行有关,而不是读/写权限。
这是我从 kubernetes yaml 安装卷的方式
- name: master-share-config
flexVolume:
driver: "fstab/cifs"
fsType: "nfs"
secretRef:
name: "master-share-secret"
options:
networkPath: "//MACHINE_IP_ADDRESS/apps/radarr/"
mountOptions: "dir_mode=0755,file_mode=0644,uid=k8sadmin,gid=k8sadmin,rw,exec,dev,suid"
我尝试过但不起作用的事情:
- 众多
mountOptions
- 将 samba 共享安装到工作机器中并在 deployment.yaml 中使用 PersistentVolume(完全相同的错误)
- 挂载为
cifs
- 挂载为
nfs
我尝试过的事情确实有效:
- 不覆盖容器上的文件夹
- PersistentVolume 到工作机器中的某个位置
我已经尝试了一段时间了,我几乎可以肯定它要么是 samba 共享的设置,要么是卷被声明的方式。
请注意,我已经使用fstab/cibs
插件来帮助调试它,我并不热衷于一次又一次地将驱动器重新安装到容器中,但它似乎可以安装驱动器。话虽如此,我不完全确定fsType: "nfs"
正在做任何事情,因为日志没有说明你可以做到。但正如我所说,安装 from/etc/fstab
也不起作用。
如果有人之前有解决方案和/或遇到类似问题,请告诉我。
另外,因为我能够从工作机器上的文件夹运行它,所以我只能假设这是 samba 或 samba 声明的问题。
解决方案
好的,在输入所有内容后,我找到了自己的问题。开始调查是否fsType: "nfs"
有效。原来我根本没有使用 nfs,甚至没有安装 nfs 挂载工具。
在修复所有这些之后,它就可以工作了。
我会把它留在这里,希望它可以帮助其他人。
推荐阅读
- powershell - 使用变量的 Get-ADObject 和 Where-Object 问题
- ios - 更改 UILabel 部分被星号包围的文本颜色
- git - 如果您 git commit a stash,提交历史记录中将显示什么日期?
- mysql - 按差异过滤的绩效分组
- excel - 在数据透视表中选择最后 3 个值(周)但没有使用 VBA 的“空白”
- enums - 如何使用 Dart/Flutter 管理对枚举属性的序列化/反序列化到 Firestore?
- vba - 使用 FolderItemVerbs 并调用或 DoIt 从 VBA 执行 windows shell 中的子菜单项
- angular - Angular 4 缓存
- java - 如何获取 GraphicsDevice 的名称
- r - 如何计算预训练词嵌入的相似度