推送到端口转发docker注册表

推送到端口转发docker注册表,docker,docker-registry,docker-machine,Docker,Docker Registry,Docker Machine,背景 有一个我无法控制的私人docker注册表。此注册表无法从我的计算机访问,但可以从我有权访问的远程服务器访问 这是我当前(效率相当低)的工作流程: # 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 R

背景

有一个我无法控制的私人docker注册表。此注册表无法从我的计算机访问,但可以从我有权访问的远程服务器访问

这是我当前(效率相当低)的工作流程:

# 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
现在,我可以从我的计算机与注册表通信:

$ ssh -L 5042:REGISTRY:5000 SERVER
$ 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
,但在本地主机上,这毫无意义,因为我的计算机无法访问
注册表
url

或者问题可能是因为我正在通过docker机器运行docker

问题


我是否可以将端口转发到本地端口的专用docker注册表推送到该注册表?

需要两个ssh隧道。一个来自本地机器(这一个由docker客户端使用),另一个来自docker机器(这一个由docker守护进程使用)

docker-machine ssh
ssh -L 5042:REGISTRY:5000 SERVER