Docker卷安装问题

我试图从容器dynamic挂载一个卷到主机,它的工作原理,但有一个顺利。 我正在使用以下命令:

docker run -it --name Test1 -v $HOME/.myapp_configs/specificConfig.txt:/bin/specificConfig.txt:rw docker-image /bin/bash 

问题在于,如果主机上的挂载点不存在,docker命令会创build它,但是像我所期望的那样,将其分配给root:root而不是$USER:$USER 。 我认为这很可能是Docker识别的命名空间映射问题的直接结果。

有没有人有任何想法,我可以强制使用适当的权限创build主机安装点? 即

  drwxr-xr-x. 3 $USER $USER 31 Aug 21 15:02 ~/.myapp_configs/specificConfig.txt 

代替…

  drwxr-xr-x. 3 root root 31 Aug 21 15:02 ~/.myapp_configs/specificConfig.txt 

谢谢,

布鲁斯

在运行容器之前确保文件存在?

该命令可能看起来像:

 test -f $HOME/.myapp_configs/specificConfig.txt || touch $HOME/.myapp_configs/specificConfig.txt docker run -it --name Test1 -v $HOME/.myapp_configs/specificConfig.txt:/bin/specificConfig.txt:rw docker-image /bin/bash 

说明:

  • 如果文件存在,则test -f <some file>将具有退出状态0
  • || 只有当前面的命令退出状态不是0才会执行以下命令
  • touch <some file>修改现有的文件修改时间,或者(这是我们的情况)创build一个空文件

当然,如果你的容器中有一些代码行为不同,无论文件是否存在 ,那么你将不得不适应代码来检查文件是否为空