华为云 SWR 容器镜像服务实战:镜像构建、漏洞扫描与跨区域自动同步
一、业务背景
团队把容器镜像散落在各个构建机上,用 docker save/load 传递,环境一多就找不到哪个镜像是哪个 commit 构建的;扫描也没人做,漏洞报告全靠人工比对。SWR 是华为云的容器镜像服务,提供镜像托管、漏洞扫描、跨区域同步和镜像老化策略,正好把这几件事收敛到一个地方。
二、准备组织与登录
在 SWR 控制台创建组织(命名空间)后,命令行先登录:docker login -u AK -p 登录密钥 swr.cn-north-4.myhuaweicloud.com。注意这里的密码是「我的凭证」里生成的长期有效登录密钥,不是账号登录密码,很多人第一次都会卡在这里。密钥建议放进 CI 的变量里,不要写进脚本。
三、构建并推送镜像
在 Dockerfile 同目录执行 docker build -t swr.cn-north-4.myhuaweicloud.com/myorg/order-api:1.2.0 . 然后 docker push 同名标签。多区域部署时同一镜像要打不同区域的域名前缀,用 docker tag 复制一份再推。构建机上不要保留悬空镜像,推送完接 docker image prune -f。
四、漏洞扫描与流程卡点
镜像推上去后在 SWR 控制台可以对指定版本触发扫描,扫描结果分致命、严重、高危、中危、低危几档,并给出软件包版本和修复建议。真正的价值是把扫描接进流程:在流水线里调用镜像扫描接口,返回的严重级别超过阈值就让流水线失败,避免带着高危漏洞的镜像被部署。基础镜像换成更小的 alpine 或 distroless,通常能一次消掉几十条告警。
五、跨区域自动同步
SWR 支持配置同步规则:源区域选组织与镜像过滤,目标区域选另一个区域。配置后新推送的镜像会自动复制过去,异地集群拉取走就近区域,节省跨区流量。同步是异步的,首次同步老镜像需要点手动同步,并注意同名同标签不会覆盖,所以要靠 tag 规范(如日期加 commit 号)来保证唯一。
六、镜像老化与存储成本
镜像只增不减很快撑爆配额。老化策略按保留最近 N 个标签、保留最近 N 天组合配置,规则只对匹配的过滤条件生效,建议先只对一个测试组织开启观察两周,确认没有删掉正在使用的版本再推广。
七、踩坑与建议
第一,登录密钥过期或权限不足会导致 push 报 unauthorized,检查 IAM 是否授予 SWR 管理员或对应组织的读写权限。第二,镜像拉取密钥需要在 CCE 里配置为 imagePullSecrets,否则节点拉取 401。第三,构建产物用 digest 固定比 tag 更可靠。第四,把扫描结果和同步状态推送到群里,比事后查报表有效得多。
整体下来,SWR 把镜像的存、扫、同步三件事标准化了,团队从散落的镜像文件变成有流程可查的流水线,日常维护成本明显下降。
- 点赞
- 收藏
- 关注作者
评论(0)