Python 在docker的共享卷中创建符号并在主机中访问它
我正在docker内主机的装入卷中创建一个符号链接。但我无法在主机中访问它。有可能吗。如果是,我怎么做 我使用以下命令装载目录Python 在docker的共享卷中创建符号并在主机中访问它,python,linux,docker,unix,symlink,Python,Linux,Docker,Unix,Symlink,我正在docker内主机的装入卷中创建一个符号链接。但我无法在主机中访问它。有可能吗。如果是,我怎么做 我使用以下命令装载目录 docker run -it --rm --net host -v $(pwd):/workspace --name myproject my-container:dev 然后,我使用 import os fname = '/workspace/log/project_info_hostinfo_timeinfo_exe_param.log' symlink_name
docker run -it --rm --net host -v $(pwd):/workspace --name myproject my-container:dev
然后,我使用
import os
fname = '/workspace/log/project_info_hostinfo_timeinfo_exe_param.log'
symlink_name = '/workspace/log/project_info.log'
os.symlink(fname, symlink_name)
现在,当我试图查看日志信息时
$ls
lrwxrwxrwx 1 root root 66 Mar 4 14:54 project_info.log -> /workspace/log/project_info_hostinfo_timeinfo_exe_param.log
-rw-r--r-- 1 root root 206 Mar 4 14:54 project_info_hostinfo_timeinfo_exe_param.log
但当我试图打开文件时,我得到了这样的信息
$tail -f project_info.log
tail: cannot open 'project_info.log' for reading: No such file or directory
tail: no files remaining
可以使用所需的任何路径名创建符号链接。当您访问它时,它在自己的上下文中被用作一个正常的文件系统路径;如果它是相对路径,则相对于链接的位置访问它。如果在多个上下文中有相同的文件系统(主机和容器中都有绑定挂载的Docker目录;远程文件系统),则符号链接可能在一个上下文中正确解析,而在另一个上下文中则无法正确解析 在您的示例中:
/workspace/log/project\u info\u hostinfo\u timeinfo\u exe\u param.log
/workspace
目录是挂载的主机目录,因此它可以工作/workspace
目录,因此它不工作导入操作系统
#如果链接目标在同一目录中,只需使用文件名,
#不是绝对路径
fname='project_info_hostinfo_timeinfo_exe_param.log'
symlink_name='/workspace/log/project_info.log'
os.symlink(fname,symlink\u name)
创建一个符号链接作为相对路径通常很有帮助,以避免重新定位目录树的问题<例如,code>ln-s../assets/index.html。将仍然指向同一个位置,即使它位于容器上下文中,或者您的同事在其工作站上有不同的目录结构。谢谢您的回答。我想起来了,花了我
3个小时
。