1. 原理解析
SSH 端口转发(Port Forwarding)是一种将本地端口流量通过 SSH 连接重定向到远程服务器的方式。在本方案中,我们将本地端口映射到 Docker Hub 服务器(registry-1.docker.io),让本地 Docker 以为它正在直接访问 Docker Hub。
示意图:
[本地 Docker 客户端] → [SSH 隧道] → [远程服务器] → [Docker Hub]
这样,本地 Docker 发送的请求会通过 SSH 隧道访问 Docker Hub 并返回数据。
2. 使用条件
- 一台可访问 Docker Hub 的服务器
- 服务器上安装了 SSH
- 本地设备(Windows/Linux/macOS)可通过 SSH 连接到服务器
3. 配置 SSH 端口转发
3.1 在本地终端运行 SSH 端口转发
ssh -N -L 5000:registry-1.docker.io:443 user@your-server-ip
-N
:不执行远程命令,仅进行端口转发-L 5000:registry-1.docker.io:443
:将本地5000
端口映射到远程registry-1.docker.io
的443
端口user@your-server-ip
:远程服务器的 SSH 账户
保持这个 SSH 连接不关闭,否则端口转发会失效。
4. 配置 Docker 访问代理
4.1 在 daemon.json
中修改 Docker 配置
编辑 Docker 的配置文件:
nano /etc/docker/daemon.json
添加以下内容:
{
"proxies": {
"default": "http://127.0.0.1:5000"
}
}
保存后,重启 Docker
systemctl restart docker
5. 测试 Docker 是否可以正常拉取
执行拉取测试:
docker pull ubuntu
如果拉取成功,说明 SSH 端口转发生效。
发表回复