Docker Volumes挂载问题

时间:2015-08-21 20:02:32

标签: linux permissions docker volumes

我正在尝试将容器中的卷动态安装到主机上,但它有效,但是有一个障碍。我使用以下命令:

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

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

有没有人对如何强制使用适当的权限强制创建主机挂载点有任何想法?即。

    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 

谢谢,

布鲁斯

1 个答案:

答案 0 :(得分:1)

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

该命令可能如下所示:

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>修改现有的文件修改时间,或者(这是我们的情况)创建一个空文件

当然,如果您的容器内部存在一些代码,无论文件是否存在,其行为都不同,那么您必须调整该代码以检查文件是否为空相反。