如何向Docker添加卷但排除文件

时间:2017-02-11 04:56:53

标签: docker

我想将所有内容挂载到当前目录中,除了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

是否有任何选项可以在目录中挂载所有内容并排除少量文件

感谢您的澄清

1 个答案:

答案 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