【发布时间】:2015-10-13 01:28:12
【问题描述】:
TL;DR基本上,我正在寻找这个:
docker push myimage ssh://myvps01.vpsprovider.net/
我无法理解整个 Docker Hub / Registry 背后的基本原理。我知道我可以运行私有注册表,但为此我必须设置实际运行服务器的基础架构。
我偷看了 Docker 的内部工作原理(嗯,至少是文件系统),看起来 Docker 镜像层只是一堆 tarball,或多或少,带有一些复杂的文件命名。我天真地认为编写一个简单的 Python 脚本来进行分布式推/拉并非不可能,但我当然没有尝试,所以这就是我问这个问题的原因。
Docker 不能像 Git 或 Mercurial 那样只进行分布式(无服务器)推/拉,有什么技术原因吗?
我认为这将是一个巨大的帮助,因为我可以将我在笔记本电脑上构建的图像直接推送到应用服务器上,而不是先推送到某个地方的 repo 服务器,然后再从应用服务器中提取。或者我只是误解了这个概念,而注册表是我绝对需要的一个非常重要的功能?
编辑一些上下文可以解释我为什么要这样做,请考虑以下场景:
- 在我的笔记本电脑上完成开发、测试(OSX,运行 Docker 机器,使用 docker-compose 定义服务和依赖项)
- 通过脚本部署到live环境(自写,bash,对开发机器的依赖很少,基本上就是Docker机器)
- 部署到新的 VPS,除了 SSH 访问和 Docker 守护程序之外,几乎没有依赖项。
- 没有“永久”服务在任何地方运行,即我特别不想托管永久运行的注册表(尤其是所有 VPS 实例都无法访问,尽管这可能可以通过一些巧妙的 SSH 隧道解决)
目前最好的解决方案是使用 Docker 机器指向 VPS 服务器并重新构建它,但它会减慢部署速度,因为我每次都必须从源代码构建容器。
【问题讨论】:
标签: ssh docker docker-registry