Docker 从主机与容器共享目录或卷

Docker 从主机与容器共享目录或卷,docker,share,Docker,Share,我有一个目录(可能是以后的卷),我想与我所有的交互式容器共享。我知道,本地Docker卷存储在/var/lib/Docker/volumes下,Docker run-v似乎是最简单的方法,但我认为数据卷容器是一种更标准的方法。我不知道如何从目录或现有的另一个卷创建这个卷容器。这可能是错误的方法吗?通过编写一个专用Dockerfile来创建一个数据卷容器,您可以在其中: 复制其中的文件夹 将复制的本地容器路径文件夹声明为卷 然后,docker create,您将获得一个(已创建的)容器,如果您

我有一个目录(可能是以后的卷),我想与我所有的交互式容器共享。我知道,本地Docker卷存储在
/var/lib/Docker/volumes
下,
Docker run-v
似乎是最简单的方法,但我认为
数据卷容器
是一种更标准的方法。我不知道如何从目录或现有的另一个卷创建这个卷容器。这可能是错误的方法吗?

通过编写一个专用Dockerfile来创建一个数据卷容器,您可以在其中:

  • 复制
    其中的文件夹
  • 将复制的本地容器路径文件夹声明为

然后,
docker create
,您将获得一个(已创建的)容器,如果您使用
--volumes from
选项运行它们,您将获得该容器。

有两种创建和共享卷的方法:1。使用
Dockerfile
上的
VOLUME
指令。2在容器运行时指定
-v
选项,然后对需要共享数据的每个后续容器使用
--volumes from=
。这是一位前男友,后面是:

  • -v
    启动第一个容器,然后在共享卷的目录下添加一个测试文件
  • 从主机操作系统,您可以通过检查容器获取卷的详细信息:
  • 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": {} }
    
  • 启动另一个具有共享卷的容器,并检查共享文件夹/文件是否存在
  • 转到步骤3与新容器共享卷
  • "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": {} }
    
    $ 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!