【华为云】容器镜像服务 SWR 详解:从上传下载到 ModelArts 应用
前言
华为云容器镜像服务(Software Repository for Container,简称 SWR)是华为云提供的企业级容器镜像仓库服务。它支持 Docker 镜像的存储、管理和分发,为容器化应用提供安全可靠的镜像托管服务。本文将详细介绍 SWR 的核心功能和使用方法,帮助开发者更好地利用这一服务。
1. 镜像的上传和下载
1.1 登录 SWR
要想将swr上的镜像下载到自己的服务器上,或者把自己服务器上的镜像上传到swr上,首先需要登录到华为云 SWR 服务。
通过 docker login 命令
# 登录到 SWR
docker login -u {username} -p {password} {region}-swr.cn-north-4.myhuaweicloud.com
# 例如:
docker login -u myuser -p mypassword swr.cn-north-4.myhuaweicloud.com
可通过下面两部,去直接获取自己账号对应的登录指令。
(1)点击客户端上传
(2)点击生成登录指令

(3)长期登录指令
登录指令登录后可能很快就会又用不了了,可能是过期了,华为云为了包含账号安全给的这个默认有效时间不长,可以使用长期有效登录指令来登,需要填AK/SK。

获取AK/SK的方法,见获取AK/SK文档
(4)查看是否登录
另外,可通过如下指令检查是否已登录或登录过期:
cat ~/.docker/config.json
以上指令,可确认 swr.{region}.myhuaweicloud.com 是否在 auths 中且有有效 token。如果登录过期或凭证错误,重新执行 docker login 即可。

1.2 上传镜像
上传镜像到 SWR 需要以下步骤:
# 1. 给本地镜像打标签
sudo docker tag {镜像名称}:{版本名称} swr.cn-southwest-2.myhuaweicloud.com/{组织名称}/{镜像名称}:{版本名称}
# 2. 推送镜像到 SWR
sudo docker push swr.cn-southwest-2.myhuaweicloud.com/{组织名称}/{镜像名称}:{版本名称}
上传镜像按照给的指令操作即可,其中docker tag就是为了换个名称,避免将原因的镜像覆盖,而且这个操作只是建立副本不占磁盘空间。

也可以通过页面上传,直接拖过去就行,很方便,但是镜像大小限制2G,而客户端上传就没有这个限制

1.3 下载镜像
从 SWR 下载镜像同样简单:
# 拉取镜像
sudo docker pull swr.cn-southwest-2.myhuaweicloud.com/{组织名称}/{镜像名称}:{版本名称}
其中组织名称、镜像名称、版本名称,可自行查看,组织名称也可去左侧栏中的组织管理查看。

2. 镜像在 ModelArts 上的注册和使用
在 ModelArts 中注册 SWR 镜像
ModelArts 是华为云的 AI 开发平台,可以使用 SWR 中的自定义镜像:
- 登录华为云控制台,进入 ModelArts 服务
- 在左侧导航栏选择"镜像管理"
- 点击"注册镜像"
- 填写镜像信息:可选择swr中存在的镜像进行注册使用

其中架构和规则按照原先保存镜像时的来选,或自行评估。
注册好镜像后,就可以在模型管理中用该镜像创建模型,然后在模型部署中,部署成在线服务。
3. 镜像的保存和加载
下载到自己服务器上的镜像,可以通过以下方式来保存和加载:
3.1 保存镜像到本地文件
# 将镜像保存为 tar 文件
docker save -o myapp.tar swr.cn-north-4.myhuaweicloud.com/myorg/myapp:latest
3.2 从文件加载镜像
# 从 tar 文件加载镜像
docker load -i myapp.tar
保存本地的镜像文件,可以用页面上传的方式上传到swr,但是注意空间限制。
4. 常见问题
4.1 华为云ModelArts服务,里面自己的项目才几百M,将开发空间中的notebook文件打包成镜像后,占6.9G到空间,为什么镜像会这么大?
镜像大的主要原因:
(1)基础环境包含大量预装包
- ModelArts预装了大量机器学习框架和依赖
- 包括TensorFlow、PyTorch、scikit-learn等
- 这些基础环境本身就占用几个GB空间
(2)系统文件和缓存
- 系统级依赖和库文件
- pip缓存、conda缓存
- 系统临时文件
(3)开发过程中产生的文件
- Jupyter检查点文件
- 日志文件
- 临时文件和缓存
4.2 镜像打包后6.9G,下载到自己的服务器上显示19G,怎么下载下载变这么大?
(1)主要原因:文件系统存储方式不同
在ModelArts上(6.9G):
- 使用了稀疏文件技术
- 文件系统进行了压缩存储
- 相同的数据占用更少的物理空间
在你的服务器上(19G):
- 文件系统展开存储了所有数据
- 没有使用压缩,按实际大小存储
- 稀疏文件被转换为完整文件
(2)简单类比:
就像ZIP压缩文件:
- 压缩时:100个文件 = 6.9GB
- 解压后:100个文件 = 19GB(实际大小)
(3)解决方案:
- 清理镜像中不必要的文件(最有效)
- 使用压缩方式传输(.tar.gz格式)
- 检查是否有重复的层或缓存文件
(4)核心问题:不是下载过程中变大,而是存储方式不同导致的显示大小差异
更多推荐





所有评论(0)