0

我正在尝试将一个卷从容器动态挂载到主机,它可以工作,但是有一个问题。我正在使用以下命令:

    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 发现的命名空间映射问题的直接结果。

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

    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 

谢谢,

布鲁斯

4

1 回答 1

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

当然,如果您的容器中有一些代码,无论文件是否存在,它们的行为都会有所不同,那么您将不得不修改该代码以检查文件是否为空

于 2015-08-21T20:14:02.940 回答