更新时间:2026-07-09 GMT+08:00
分享

镜像推送

如何通过API推送镜像到SWR?

SWR暂时没有开放镜像上传的API,您可以参考推送镜像到镜像仓库章节的两种方式:容器引擎客户端的方式或页面上传方式来完成镜像推送。

为什么通过客户端上传和页面上传的镜像大小不一样?

问题描述

假设在本地Docker客户端上制作了一个nginx镜像,版本号为v2.0.0,使用docker images命令查询SIZE为22.8MB

$ docker images
REPOSITORY                         TAG             IMAGE ID       CREATED         SIZE
nginx                              v2.0.0          22f2bf2e2b4f   9 days ago      22.8MB
  1. 通过docker容器引擎客户端(即执行docker push命令)上传该镜像至SWR镜像仓库,查询大小为9.5MB
  2. 在本地Docker客户端将镜像打包为tar格式,将nginx.tar下载至本地后,通过页面方式上传至SWR镜像仓库,查询大小为23.2MB

可以发现,通过客户端和页面上传的镜像大小不一样。

原因分析

使用客户端上传的镜像每一层layer都进行了tgz压缩,而页面上传的镜像包是经过docker打包的,每一层layer只进行了打包,没有压缩。所以两种方式上传的镜像大小显示会不一致。

SWR镜像仓库支持ARM镜像上传么?

SWR镜像仓库对镜像的内核架构是没有任何限制的,您上传ARM架构的镜像和上传x86的镜像是没有区别的,直接上传即可。

docker push使用什么协议将镜像推送到SWR?

HTTPS协议。

同名同tag的镜像上传后会覆盖之前的镜像吗?

会覆盖,保留最新上传的镜像。

SWR单个layer的最大限制是多少?

使用客户端向SWR上传镜像,镜像的每个layer大小不能超过50G。

SWR公网上传单租户流控限制是多少?

为了确保SWR镜像上传租户间不会互相影响,当前对单个租户流控为镜像层上传20QPS,超过后会被限流,docker会收到503并会自动重试限流拦截的请求。

SWR支持断点续传镜像文件吗?

暂不支持。

通过公网上传镜像到SWR时,公网链路不稳定导致上传镜像慢或卡住,如何优化?

可通过调整OS参数,优化上传速度。

适用场景:Linux内核版本4.9及以上(如Euler OS 2.9、HCE 2.0、Ubuntu 18、Rocky Linux 8+等)。

操作步骤

  1. 登录到上传镜像的目标主机,切换至root用户。
  2. 执行以下命令优化网络传输性能:
# 设置网络核心的默认队列调度算法(Queueing Discipline, qdisc)为 fq(Fair Queueing,公平队列)
sysctl -w net.core.default_qdisc=fq    
# 配置 Linux 内核 TCP 拥塞控制算法的参数
sysctl -w net.ipv4.tcp_congestion_control=bbr    
# 配置 Linux 内核 TCP 发送缓冲区大小的参数
sysctl -w net.ipv4.tcp_wmem="4096 163840 41943040"  

怎么处理页面上传多个镜像时报错“ERR_BLOB_OUT_OF_MEMORY”?

问题现象

用户通过SWR控制台页面上传镜像时,单击“开始上传”按钮批量上传多个镜像包,浏览器报错“(failed)net::ERR_BLOB_OUT_OF_MEMORY”,导致上传失败。

解决方案

  • 清理浏览器缓存:
    1. 关闭当前浏览器页签。
    2. 清除浏览器缓存(Cookie、站点数据等)。
    3. 重新打开浏览器并登录SWR控制台。
    4. 重新进行上传操作。
  • 大镜像推荐使用客户端上传。具体操作请参见:容器引擎客户端推送镜像

相关文档