You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用SSH隧道推送Docker镜像至远程仓库失败,远程未同步

Docker镜像通过SSH隧道推送后远程仓库无镜像的排查方案

问题背景

通过SSH隧道将开发服务器上的Docker镜像推送至目标系统的Docker仓库(运行在443端口),隧道配置验证有效(关闭隧道时推送提示连接拒绝),但推送完成后远程系统中未找到该镜像。

隧道命令

ssh -L 10101:(IP Address):443 jump

操作过程

[user@devserver target (develop)]$ docker images | grep application
program/application                                aee3b0c8c-08-17-2022-06-09-57-422   c79b292fdebd   5 hours ago     276MB
[user@devserver target (develop)]$ docker tag program/application:aee3b0c8c-08-17-2022-06-09-57-422 localhost:10101/program/application:aee3b0c8c-08-17-2022-06-09-57-422
[user@devserver target (develop)]$ docker images | grep application
program/application                                aee3b0c8c-08-17-2022-06-09-57-422   c79b292fdebd   5 hours ago     276MB
localhost:10101/program/application                aee3b0c8c-08-17-2022-06-09-57-422   c79b292fdebd   5 hours ago     276MB
[user@devserver target (develop)]$ docker push localhost:10101/program/application:aee3b0c8c-08-17-2022-06-09-57-422
The push refers to repository [localhost:10101/program/application]
8c47cda4a82b: Layer already exists
c51a173c1f9f: Layer already exists
bc9669b66ca9: Layer already exists
fa5795d612c9: Layer already exists
002c8b92d017: Layer already exists
9b0964cf7e12: Layer already exists
a7318ad177b0: Layer already exists
3c85054ce964: Layer already exists
413ce048394c: Layer already exists
4117d2b8a3fe: Layer already exists
8d46ca9b4f93: Layer already exists
174f56854903: Layer already exists
aee3b0c8c-08-17-2022-06-09-57-422: digest: sha256:63b0072cf4a45c805a32e025abdc8aed64d63936fdac81569c0cba10f43b4f26 size: 2831
[user@devserver target (develop)]$ docker images | grep application
program/application                                aee3b0c8c-08-17-2022-06-09-57-422   c79b292fdebd   5 hours ago     276MB
localhost:10101/program/application                aee3b0c8c-08-17-2022-06-09-57-422   c79b292fdebd   5 hours ago     276MB

关闭隧道后的推送结果

[user@devserver target (develop)]$ docker push localhost:10101/program/application:aee3b0c8c-08-17-2022-06-09-57-422
The push refers to repository [localhost:10101/program/application]
Get "http://localhost:10101/v2/": dial tcp [::1]:10101: connect: connection refused
[user@devserver target (develop)]$

远程系统镜像查询结果

[root@system-2 scripts]# docker images -a | grep application
[root@system-2 scripts]#

排查与解决步骤

1. 确认仓库登录状态与证书配置

  • 私有仓库需先登录:如果目标是私有Docker仓库(如Harbor、Docker Registry),推送前必须完成登录。执行:
    docker login localhost:10101
    
    输入目标仓库的合法账号密码后重新推送。
  • 处理自签名HTTPS证书:目标仓库用443端口(HTTPS),若使用自签名证书,开发服务器的Docker需将localhost:10101标记为不安全仓库:
    编辑/etc/docker/daemon.json(Linux系统),添加:
    {
      "insecure-registries": ["localhost:10101"]
    }
    
    重启Docker服务:
    systemctl restart docker
    

2. 验证SSH隧道与仓库连通性

  • 检查端口映射有效性:在jump服务器上执行,确认能访问目标仓库的443端口:
    curl https://(IP Address)/v2/
    
    正常响应会返回{}或仓库API相关内容。
  • 确认本地端口监听:在开发服务器上检查10101端口是否被SSH进程占用:
    netstat -tulpn | grep 10101
    
    需显示ssh进程在监听该端口。

3. 检查目标仓库的日志与配置

  • 查看仓库日志:登录目标系统,查看Docker仓库容器的日志,排查推送时的错误(如权限不足、存储满):
    docker logs <registry-container-name>
    
  • 确认镜像命名规则:部分仓库要求镜像属于指定命名空间/项目,检查推送的标签是否符合仓库要求。

4. 开启调试模式推送

执行推送时添加--debug参数,查看详细交互日志,定位隐藏错误:

docker push --debug localhost:10101/program/application:aee3b0c8c-08-17-2022-06-09-57-422

内容的提问来源于stack exchange,提问作者georges

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 00:54:12