如何将大量文件挂载到远程 docker 守护进程?

Bra*_*son 18 docker docker-volume

我有一个 Docker 镜像a,它对一组给定的文件执行一些逻辑。在本地运行时,我开始a如下:

docker run -v /home/Bradson/data:/data a
Run Code Online (Sandbox Code Playgroud)

这完成了它的工作。

现在我想a在远程 Docker 守护进程上运行:

DOCKER_HOST=tcp://remote_host:2375 docker run -v /home/Bradson/data:/data a
Run Code Online (Sandbox Code Playgroud)

我现在收到/data不包含任何内容的错误,很可能是因为/home/Bradson/data远程主机上不存在。

我该如何处理?我应该首先scp /home/Bradson/data访问远程主机上的某个目录并在-v选项中引用该目录吗?是否有纯粹的 Docker 方法?

请注意,我希望/home/Bradson/data在运行时可用,而不是在a. 因此我使用了该-v选项。

Bra*_*son 10

这是对我自己问题的回答。

我发现了以下纯 Docker 方法。我正在寻找一种直接将文件复制到卷的方法,但由于某种原因似乎不受支持?

但是,您可以将文件复制到容器。所以以下工作:

DOCKER_HOST=tcp://remote_host:2375 docker volume create data-volume
DOCKER_HOST=tcp://remote_host:2375 docker create -v data-volume:/data --name helper busybox true
DOCKER_HOST=tcp://remote_host:2375 docker cp /home/Bradson/data helper:/data
DOCKER_HOST=tcp://remote_host:2375 docker rm helper
DOCKER_HOST=tcp://remote_host:2375 docker run -v data-volume:/data a
Run Code Online (Sandbox Code Playgroud)

这受到/sf/answers/2622874621/ 的启发。

  • 我也在寻找这个问题的解决方案。一个直接从 docker-compose 将本地目录创建到远程主机的目录,您将卷设置为 /home/dev:/remote/dev (2认同)