共享作为挂载点的Docker容器目录

时间:2016-05-01 16:17:10

标签: docker

我有一个Docker容器,其挂载点位于/ofs,指向存储在AWS S3中的ObjectiveFS卷。 ObjectiveFS卷包含一些文件。

以下是容器内的相关输出:

root@d817213fe73a:/ofs# mount
/dev/mapper/docker-202:1-263633-d817213fe73ac81cafa7e5c7ab45567835327a27d2b5e57aef496a28e5398c47 on / type xfs (rw,relatime,nouuid,attr2,inode64,logbsize=128k,sunit=256,swidth=1024,noquota)
...
s3://<my_s3_bucket> on /ofs type fuse.objectivefs (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other)

root@d817213fe73a:/ofs# ls -l /ofs
total 2
-rw-rw-rw- 1 root root 605 Apr 26 17:33 README
-rw-r--r-- 1 root root  20 Apr 26 18:00 test.txt
root@d817213fe73a:/ofs#

我想将/ofs中的数据与另一个容器共享。

我尝试在第一个容器中的/ofs创建一个Docker卷,并使用docker run -v /ofs first_containerdocker run --volumes-from first_container second_container与第二个容器共享它,但是这样做时文件在/ofs处不会显示在主机上的卷目录中,因此另一个容器无法访问它们:

[root@ip-172-17-1-106 ~]# ls -al /var/lib/docker/volumes/209cc29d6046d80db80194650871173bc137061de1d8c509a45a32c8142e5306/_data/
total 8
drwxr-xr-x 2 root root 4096 May  1 15:23 .
drwxr-xr-x 3 root root 4096 May  1 15:23 ..
[root@ip-172-17-1-106 ~]#

以下是第一个容器中findmnt /ofs的输出:

root@2d3c0f90f46d:/ofs# findmnt /ofs
TARGET SOURCE                                                                                                     FSTYPE           OPTIONS
/ofs   /dev/xvda1[/var/lib/docker/volumes/209cc29d6046d80db80194650871173bc137061de1d8c509a45a32c8142e5306/_data] ext4             rw,noatime,data=ordered
/ofs   s3://<my_s3_bucket>                                                                             fuse.objectivefs rw,relatime,user_id=0,group_id=0,default_permis
root@2d3c0f90f46d:/ofs#

以下是两个容器的相关docker inspect输出:

第一个容器

"HostConfig": {
    "Binds": [
        "/var/lib/docker/volumes/209cc29d6046d80db80194650871173bc137061de1d8c509a45a32c8142e5306/_data:/ofs"
    ]
},
"Mounts": [
    {
        "Source": "/var/lib/docker/volumes/209cc29d6046d80db80194650871173bc137061de1d8c509a45a32c8142e5306/_data",
        "Destination": "/ofs",
        "Mode": "",
        "RW": true
    }
]

第二个容器

"HostConfig": {
    "Binds": [
        "/var/app/current/php-app:/var/www/html:ro"
    ]
},
"Mounts": [
    {
        "Source": "/var/lib/docker/volumes/209cc29d6046d80db80194650871173bc137061de1d8c509a45a32c8142e5306/_data",
        "Destination": "/ofs",
        "Mode": "",
        "RW": true
    },
    {
        "Source": "/var/app/current/php-app",
        "Destination": "/var/www/html",
        "Mode": "ro",
        "RW": false
    }
]

/ofs作为挂载点时,是否知道如何与第二个容器共享第一个容器上的/ofs目录?

1 个答案:

答案 0 :(得分:0)

您是否尝试将卷直接安装在主机上并与容器共享?

docker run -it -v /ofs:/ofs ubuntu