【问题标题】:GCloud: Copying Files from Local Machine into a Docker ContainerGCloud:将文件从本地机器复制到 Docker 容器中
【发布时间】:2017-07-04 05:30:19
【问题描述】:
是否有一种直接的方法可以将文件从本地计算机复制到 Google Compute Engine 上的 VM 实例内的 docker 容器中?
我知道gcloud compute ssh --container=XX 是一种在容器上执行命令的简单方法,但没有类似的gcloud compute scp --container=XX。注意:我使用命令 gcloud alpha compute instances create-from-container ... 创建了这个 VM 和 docker 容器
注意,除了能够传输文件之外,拥有rsync 类型的功能会更好。
【问题讨论】:
标签:
docker
google-cloud-platform
google-compute-engine
gcloud
google-kubernetes-engine
【解决方案1】:
不幸的是,如果没有您的一些设置(并且它不是测试版),它似乎是不可用的:尽管创建了一个卷映射,您可以通过在容器内运行 sshd 来监听它自己映射到主机的端口:
-
gcloud 计算防火墙规则创建 CONTAINER-XX-SSH-RULE --allow
tcp:2022 --target-tags=XX-HOST
-
gcloud compute scp --port 2022 --recurse stuff/ user@XX-HOSTNAME:
或
-
scp -r -P 2022 stuff/user@xx-host-ip:
【解决方案2】:
我通常使用一种方法,在本地机器和云虚拟机之间使用对象存储。在 AWS 上我使用 s3 sync,在 Google 上你可以使用 gsutil rsync
首先,当我准备好部署“本地”开发机器上的数据时,它会被推送到对象存储中。
- (有问题的数据是 git 存储库的快照 + 一些二进制文件
文件)。
- (有时有问题的开发机器是笔记本电脑,有时
我的桌面,有时是云 IDE。他们都运行 git)。
然后,VM 使用 s3 sync 从对象存储中提取内容。我认为您可以使用gsutil 将数据从 Google 对象存储中提取到 Google 容器中。 (事实上,您甚至可以使用 gsutil 在云之间进行 rsync)。
这是我的小规模开发运营环境。这需要更多的工作,但使用对象存储作为在机器之间同步数据快照的中间人提供了一些灵活性、可重现的环境和安心。