【问题标题】:Best way to copy files from Docker volume on remote server to local host?将文件从远程服务器上的 Docker 卷复制到本地主机的最佳方法?
【发布时间】:2018-07-12 05:07:53
【问题描述】:
我有,
- 我的笔记本电脑
- 我可以通过 SSH 访问的远程服务器有一个 Docker 卷,里面有一些我想复制到我的笔记本电脑的文件。
复制这些文件的最佳方法是什么?使用 rsync 等快速/可以恢复/显示进度并且不写入任何临时文件的东西的奖励积分。
注意:我在远程服务器上的用户没有权限直接从/var/lib/docker 中的卷挂载中提取数据,尽管我可以在那里运行任何容器。
【问题讨论】:
标签:
ssh
docker
file-transfer
【解决方案1】:
遇到这个问题,我创建了dvsync,它使用ngrok 建立一个隧道,rsync 正在使用该隧道来复制数据,即使机器位于私有 VPC 中也是如此。要使用它,首先在本地启动dvsync-server,将其指向源目录:
$ docker run --rm -e NGROK_AUTHTOKEN="$NGROK_AUTHTOKEN" \
--mount source=MY_DIRECTORY,target=/data,readonly \
quay.io/suda/dvsync-server
注意,您需要NGROK_AUTHTOKEN,可以从ngrok dashboard 获得。然后在目标机器上启动dvsync-client:
docker run -e DVSYNC_TOKEN="$DVSYNC_TOKEN" \
--mount source=MY_TARGET_VOLUME,target=/data \
quay.io/suda/dvsync-client
DVSYNC_TOKEN 可以在dvsync-server 输出中找到,它是一个 base64 编码的私钥和隧道信息。复制数据后,客户端将退出。
【解决方案2】:
我不确定这样做的最佳方式,但如果我是你,我会运行一个共享同一卷的容器(只读 - 因为你似乎只想下载卷中的文件) 并下载论文。
此容器可以根据需要运行 rsync。