【问题标题】:Docker volumes-from blank, from network shareDocker 卷——来自空白,来自网络共享
【发布时间】:2015-12-17 14:11:33
【问题描述】:

我有两个容器,一个被设置为数据卷,我可以进入数据容器内部并浏览从网络共享挂载的文件,没有任何问题。

当我转到安装了卷的文件夹时,在第二个 docker 实例上,该文件夹存在但所有应该存在的文件和目录都不可见。

这曾经可以工作,所以我只能假设它是由于 docker 1.9 我在 linux 和 mac 机器上看到的。

关于原因的任何想法?这是一个错误还是我可以调查的其他问题?

检查的输出。

    "Volumes": {
        "/mnt/shared_app_data": {},
        "/srv/shared_app_data": {}
    },

    "Mounts": [
    {
        "Name": "241d3e495f312c79abbeaa9495fa3b32110e9dca8442291d248cfbc5acca5b53",
        "Source": "/var/lib/docker/volumes/241d3e495f312c79abbeaa9495fa3b32110e9dca8442291d248cfbc5acca5b53/_data",
        "Destination": "/mnt/shared_app_data",
        "Driver": "local",
        "Mode": "",
        "RW": true
    },
    {
        "Name": "061f16c066b59f31baac450d0d97043d1fcdceb4ceb746515586e95d26c91b57",
        "Source": "/var/lib/docker/volumes/061f16c066b59f31baac450d0d97043d1fcdceb4ceb746515586e95d26c91b57/_data",
        "Destination": "/srv/shared_app_data",
        "Driver": "local",
        "Mode": "",
        "RW": true
    }
],

文件以这种方式挂载到docker文件中

RUN echo '/srv/path ipaddress/255.255.255.0(rw,no_root_squash,subtree_check,fsid=0)' >> /etc/exports
RUN echo 'ipaddress:/srv/path /srv/shared_app_data  nfs defaults 0 0' >> /etc/fstab
RUN echo 'ipaddress:/srv/path /mnt/shared_app_data  nfs defaults 0 0' >> /etc/fstab

然后当容器启动时它运行。

service rpcbind start
mount -a 

【问题讨论】:

    标签: docker network-share volumes


    【解决方案1】:

    您需要确保第二个容器确实挂载了第一个容器中声明的 VOLUME

    docker run --volumes-from first_container second_container
    

    确保第一个容器确实有正确的文件:请参阅“Locating a volume

    docker inspect first_container
    # more precisely
    sudo ls $(docker inspect -f '{{ (index .Mounts 0).Source }}' first_container)
    

    【讨论】:

    • 我已经添加了检查的结果,同时运行 sudo docker exec -it first_container ls -la /mnt/shared_app_data 正确列出了所有文件
    • @Oly 您的第二个容器是否使用 --volume-with 选项运行?
    • 不,我不使用卷-我之前没有遇到过该选项,第二个容器使用 --volumes-from first_container 启动
    • @Oly 抱歉,我指的是volumes-from,而不是volumes-with。第一个容器是否在其 dockerfile 中声明了 VOLUME?
    • 是的,我在 docker 文件 VOLUME /srv/shared_app_data VOLUME /mnt/shared_app_data 中有这些,与上面的检查结果相匹配。
    猜你喜欢
    • 2020-07-17
    • 2014-06-15
    • 2013-11-25
    • 2018-08-02
    • 2017-01-12
    • 1970-01-01
    • 1970-01-01
    • 2021-07-19
    • 1970-01-01
    相关资源
    最近更新 更多