我想将所有内容挂载到当前目录中,除了2个文件。 log4j.properties和datanucleus.properties
的myapp /配置:/根/ MyApp的/配置
我的目录结构如下
配置
subdir1
subdir2
subdir3
log4j.properties
datanucleus.properties
我目前必须手动挂载所有路径,如下所示:
myapp / config / subdir1:/ root / myapp / config / subdir1
myapp / config / subdir2:/ root / myapp / config / subdir2
的myapp /配置/ subdir3:/根/ MyApp的/配置/ subdir3
是否有任何选项可以在目录中挂载所有内容并排除少量文件
感谢您的澄清
答案 0 :(得分:0)
假设您的文件夹结构目前是:
$ tree config/
config/
|-- datanucleus.properties
|-- log4j.properties
|-- subdir1
| `-- subdir1 -> subdir1
|-- subdir2
| `-- subdir2 -> subdir2
`-- subdir3
`-- subdir3 -> subdir3
一种解决方法是利用符号链接。这样做:
mkdir dockerconfig
cd dockerconfig
ln -s ../originalconfig/subdir1 subdir1
ln -s ../originalconfig/subdir2 subdir2
ln -s ../originalconfig/subdir3 subdir3
cd ..
是的,这些将暂停,但在容器内他们不会。
现在,进行两次音量调整,例如:
docker run --rm -it -v $PWD/config:/root/originalconfig -v $PWD/dockerconfig:/root/config centos:6.8 /bin/bash
然后,在容器内,您将拥有:
[root@9d803b889464 ~]# tree /root/
/root/
|-- anaconda-ks.cfg
|-- config
| |-- subdir1 -> ../originalconfig/subdir1
| |-- subdir2 -> ../originalconfig/subdir2
| `-- subdir3 -> ../originalconfig/subdir3
|-- install.log
|-- install.log.syslog
|-- originalconfig
| |-- datanucleus.properties
| |-- log4j.properties
| |-- subdir1
| | `-- subdir1 -> subdir1
| |-- subdir2
| | `-- subdir2 -> subdir2
| `-- subdir3
| `-- subdir3 -> subdir3
|-- subdir1
`-- subdir3
8 directories, 10 files
现在您的应用可以使用/root/config