【问题标题】:Can't mount HOST folder into Amazon Docker Container?无法将 HOST 文件夹挂载到 Amazon Docker 容器中?
【发布时间】:2016-06-24 17:58:54
【问题描述】:

我正在使用 EC2 实例来运行 docker。在我使用 OSX 的本地机器上,我使用 docker 机器来创建容器和卷。但是,当我尝试将本地文件夹安装到任何容器时是不可能的。

docker create -v /data --name data-only-container ubuntu /bin/true
docker run -it --volumes-from data-only-container -v $(pwd)/data:/backup ubuntu bash

使用第一个命令,我创建了一个纯数据容器,我正在执行第二个命令以进入一个容器,该容器应该具有纯数据容器卷和我正在尝试挂载的容器,但是当访问它时文件夹 /backup 为空

我做错了什么?

编辑: 我正在尝试挂载一个主机文件夹,以便将备份的数据从我的 PC 恢复到容器。在那种情况下,会有什么不同的方法?

我应该尝试使用 Flocker 吗?

【问题讨论】:

    标签: amazon-ec2 docker docker-volume


    【解决方案1】:

    使用-v /path/to/dir:/container/mnt 挂载的主机卷从容器内的 docker 主机挂载一个目录。当您在 OSX 系统上运行此命令时,$(pwd)/data 将引用本地计算机上的一个目录,该目录在 docker 主机上不存在,即 EC2 实例。如果您登录到您的 EC2 实例,您可能会发现在那里创建的 $(pwd)/data 目录是空的。

    如果要将 OSX 系统中的文件夹挂载到 docker 容器中,则需要在 OSX 系统本身上运行 Docker。


    编辑:要回答如何将数据移动到云中的容器的附加问题,通常有一些方法可以将数据移动到 docker 之外的云提供商本身,然后将其直接包含在容器中。要执行 docker only 方法,您可以执行以下操作:

    tar -cC /source . | \
    docker run --rm -i -v app-data:/target busybox \
      /bin/sh -c "tar -xC /target"
    

    这将使用 tar 通过管道将数据上传到 docker 主机上的命名卷中。然后,您可以在任何其他容器中包含命名的“app-data”卷。如果您需要对较大的数据集多次执行此操作,则创建 rsync 容器会更有效。

    【讨论】:

    • 确实,我得到的唯一东西就是我在 AWS 上的 docker 主机上的 $(pwd) 副本。不明白“在 OSX 系统本身上运行 Docker”是什么意思。你是说只有Virtual Box才有可能?
    • 运行容器的 docker 主机需要在该主机上显示文件系统才能将其共享给它运行的容器。因此,要像这样创建基于主机的卷,并从 OSX 机器共享文件,使用 Docker beta 或 Virtualbox 运行容器是最好的方法。对于高级用户,还有其他 docker volume drivers 可以让您连接到主机、容器或命名卷以外的其他东西。
    猜你喜欢
    • 1970-01-01
    • 2016-09-18
    • 2021-11-21
    • 1970-01-01
    • 2020-11-17
    • 1970-01-01
    • 2021-05-24
    • 2021-03-28
    相关资源
    最近更新 更多