3

我正在使用 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

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

我做错了什么?

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

我应该尝试使用 Flocker 吗?

4

1 回答 1

2

挂载的主机卷-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 容器会更有效。

于 2016-06-24T19:33:48.087 回答