与来自主机的容器共享目录或卷

我有一个目录(也许以后的卷),我想与我所有的互动容器分享。 我知道,本地Docker卷存储在/var/lib/docker/volumesdocker run -v似乎是最简单的方法,但我认为Data Volume Container是一种更加标准化的方式。 我不知道,如何从一个目录或现有的另一个卷创build这个卷容器。 也许是错误的方法?

有两种创build和共享卷的方法:1.使用Dockerfile上的VOLUME指令。 2在容器运行时指定-v <volume_name>选项,稍后使用--volumes-from=<container>与每个需要共享数据的后续容器。 以下是前者的例子:

  1. -v启动你的第一个容器,然后在共享卷的目录下添加一个testing文件。
 docker run -it -v /test-volume --name=testimage1 ubuntu:14.04 /bin/bash root@ca30f0f99401:/# ls bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys test-volume ===> test-volume dir got created here root@ca30f0f99401:/# touch test-volume/1 root@ca30f0f99401:/# cat > test-volume/1 Test Message! 
  1. 在主机操作系统中,您可以通过检查容器来获取卷的详细信息:

docker inspect ca30f0f99401 | grep -i --color -E '^|Vol'

 "Mounts": { "Name": "025835b8b47d282ec5f27c53b3165aee83ecdb626dc36b3b18b2e128595d9134", "Source": "/var/lib/docker/volumes/025835b8b47d282ec5f27c53b3165aee83ecdb626dc36b3b18b2e128595d9134/_data", "Destination": "/test-volume", "Driver": "local", "Mode": "", "RW": true "Image": "ubuntu:14.04", "Volumes": { "/test-volume": {} } 
  1. 启动共享卷的另一个容器,并检查共享文件夹/文件是否存在。
 $ docker run -it --name=testimage2 --volumes-from=testimage1 ubuntu:14.04 /bin/bash root@60ff1dcebc44:/# ls bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys test-volume tmp usr var root@60ff1dcebc44:/# cat test-volume/1 Test Message! 
  1. 转到步骤3与新容器共享音量。

通过编写一个专用的Dockerfile来创build一个数据卷容器,您将:

  • COPY你的文件夹
  • 声明将本地容器path文件夹复制为VOLUME

然后docker create <imagename> ,你得到一个(创build的)容器,你可以在所有其他的容器中装载 ,只要你使用--volumes-from <containername>选项运行它们。