我遇到了一个问题:没有卷挂载,加上在python中创建目录。
基本上在我的容器内,我正在写一些路径/opt/…
,可能必须建立路径(我正在使用os.makedirs
作为路径)
如果我安装了诸如-v /opt:/opt
之类的主机文件路径,但其“权限”很差,而docker容器似乎无法写入,则在容器内部创建路径不会失败。 makedirs(P)
之所以有效,是因为它在容器内可以使dir正常,因为它具有sudo权限。但是,/opt/…
的主机上没有任何内容被静默地写入。数据不存在,但从未引发异常。
如果我安装了具有适当/开放权限的路径,例如-v /tmp:/opt
,则数据将按预期显示在主机/tmp/…
上。
那么,如果-v参数左侧的主机上没有写许可权,我怎么不会默默地失败?\
编辑:我的问题是“如果部署容器的人员错了,那么我如何检测这种不良的部署方案,崩溃并在容器内部快速失败?”?只是默默地不写数据是不可接受的。
答案 0 :(得分:0)
错误的安装是主机的根,正确的安装是主机上的Docker组中的用户吗?您可以检查已安装的/opt
的用户/组吗?它应该不同于/tmp
。
答案 1 :(得分:0)
您可能希望/ opt中存在一个特殊文件,如果不存在该文件就会失败
if not os.path.exists(PATH):
raise Exception("could not find PATH: file missing or failed to mount /opt")