推送到端口转发的dockerregistry
背景
有一个私人dockerregistry我无法控制。 此registry不能从我的电脑访问,但可以从我有权访问的远程服务器访问。
这是我目前(相当低效)的工作stream程:
# On my machine $ docker save IMAGE > FILE $ scp FILE SERVER $ ssh SERVER # On the server $ docker load < FILE $ docker tag -f IMAGE REGISTRY:5000/IMAGE $ docker push REGISTRY:5000/IMAGE
问题
我需要永久推送图像,因为即使大多数泊坞窗图层没有变化,我也需要保存,上传和加载整个tarball。
我试图用ssh将dockerregistry端口(5000)转发到我的机器上的一个端口:
$ ssh -L 5042:REGISTRY:5000 SERVER
现在我可以从我的机器与registry进行通信:
$ curl localhost:5042/v2/ {}
但docker工人不会将图片推送给它:
$ docker tag IMAGE localhost:5042/IMAGE $ docker push localhost:5042/IMAGE The push refers to a repository [localhost:5042/IMAGE] (len: 1) Sending image list FATA[0000] Put http://localhost:5042/v1/repositories/IMAGE/: dial tcp 127.0.0.1:5042: connection refused
我有一个感觉,问题是在图像的不同名称/标签。 在服务器上,我需要将其标记为REGISTRY:5000/IMAGE
但在本地主机,这是没有意义的,因为REGISTRY
url无法从我的电脑访问。
或者,问题可能是由于我通过docker-machine运行docker的事实造成的。
题
我可以以某种方式推送到端口转发到本地端口的私人dockerregistry?
需要有两个ssh隧道。 一个来自本地机器(这个被docker客户端使用)和一个来自docker-machine(这个被docker守护进程使用)。
docker-machine ssh ssh -L 5042:REGISTRY:5000 SERVER