镜像管理
镜像分为“我的镜像”和“镜像收藏”。
我的镜像
单个项目内共享,项目间互相隔离,支持 读写 权限。
镜像收藏
资源仓库 中收藏的镜像,仅支持 只读 权限。
登录镜像仓库
左侧功能栏选择“资源管理->镜像管理”;
单击右上角“上传”,查看操作说明。
安装 Docker
请参考官方文档 https://docs.docker.com/get-docker/。
Windows 和 macOS 用户可以安装 Docker Desktop;Linux 用户可以安装 Docker CE 命令行版。 Linux 用户也可以选择 国内的镜像源 加速安装 Docker。
推荐使用 Linux 系统。
non-root 用户使用 Docker
该步骤为可选操作,如果 Docker Daemon 服务以 rootless 模式启动,如在公共服务器上使用 Docker, 请参考官方文档 https://docs.docker.com/engine/security/rootless/ 完成配置。
登录镜像仓库
docker login <DOCKER_REGISTRY>
此命令中:
<DOCKER_REGISTRY>
是镜像仓库地址,如上图
docker-user.example.com:30080
。
该命令会提示输入用户名和密码,使用登录平台的用户名密码即可。
登录时的常见问题
提示
server gave HTTP response to HTTPS client
。说明平台没有配置 HTTPS。需要给 Docker 配置
insecure-registries
, Linux 可参考如下步骤:编辑
/etc/docker/daemon.json
文件,rootless 模式下的用户编辑~/.config/docker/daemon.json
文件, 如果不存在则新建一个。加入以下内容:
{ "insecure-registries": [ "docker-user.example.com:30080" ] }
运行
sudo systemctl reload docker
,rootless 模式下的用户运行systemctl --user reload docker
, 使配置生效。
其他操作系统可参考官方文档:https://docs.docker.com/registry/insecure/#deploy-a-plain-http-registry 。
提示域名无法解析,如
lookup docker-user.example.com on 127.0.0.53:53: no such host
。首先确保镜像仓库地址已经换成了平台显示的地址,而不是文档中的示例。
如果平台显示的地址无法解析,需要咨询管理员如何配置
/etc/hosts
文件。
我的镜像
上传镜像
需要先登录镜像仓库,然后命令行中使用 Docker 执行以下操作:
设置镜像 Tag
docker tag <SOURCE_IMAGE>[:TAG] <DOCKER_REGISTRY>/<PROJECT>/<TARGET_IMAGE>[:TAG]
此命令中:
<SOURCE_IMAGE>[:TAG]
是镜像的原有名称和 Tag,比如
ubuntu:20.04
<DOCKER_REGISTRY>
是镜像仓库地址,比如
docker-user.example.com:30080
。<PROJECT>
是镜像在镜像仓库中的项目名称,和平台项目名称一致,比如
project
。<TARGET_IMAGE>[:TAG]
是镜像在平台上显示的名称和 Tag。
关于
docker tag
命令的使用方式,请参考 docker tag 官方文档。上传到镜像仓库
docker push <DOCKER_REGISTRY>/<PROJECT>/<IMAGE>[:TAG]
<DOCKER_REGISTRY>/<PROJECT>/<IMAGE>[:TAG]
即为上一步中设置的镜像名称和 Tag。关于
docker push
命令的使用方式,请参考 docker push 官方文档。
编辑镜像
2.3 版本新增: 镜像属性增加适用的人工智能板卡类型。
用户可以修改已上传镜像的“适用范围”、“标签”、“人工智能板卡类型”和“备注”,操作步骤:
左侧功能栏选择“资源管理->镜像管理”;
选择需要编辑的镜像,单击该镜像的“操作”按钮;
在下拉列表中,单击“编辑”;
修改镜像“适用范围”、“标签”、“人工智能板卡类型”和“备注”;
单击“确定”。
在镜像 Tag 列表页,可以使用相同步骤编辑 Tag 的备注信息。
只有添加了相应的适用范围,该镜像才能在对应功能里被选择使用。
修改适用范围之后,在相关应用的克隆创建页,仍会显示该镜像的名字,但会有删除线的标记。
搜索镜像
左侧功能栏选择“资源管理->镜像管理”;
单击左上角搜索框;
在下拉列表中,可基于“镜像名”、“适用功能”和“标签”搜索镜像。
删除镜像
用户可以删除镜像的一个 Tag 或者整个镜像。
左侧功能栏选择“资源管理->镜像管理”;
选择需要删除的镜像,单击“操作”按钮;或者进入 Tag 列表页,选择要删除的 Tag,单击“操作”按钮;
在下拉列表中,单击“删除”;
单击“确定”。
删除之后,在相关应用的克隆页,仍会显示该镜像的名字,但会有删除线的标记。
拉取镜像
操作之前需要先登录镜像仓库。
左侧功能栏选择“资源管理->镜像管理”;
选择需要拉取的镜像,单击该镜像名,进入 Tag 列表页;
选择需要拉取的 Tag ,单击“拉取命令”,复制镜像拉取命令;
在命令行粘贴并运行。
镜像收藏
具体参见 资源收藏 。
镜像导入任务
4.2 版本新增: 导入外部镜像到镜像仓库。
支持从外部镜像仓库导入镜像到算力平台镜像仓库。
创建镜像拉取任务
在左侧功能栏选择“资源管理->镜像管理”;
进入“镜像导入任务”分页;
单击右上角“创建镜像导入任务”;
“任务类型”选择“拉取镜像”;
按照提示配置参数:
名称
必选项
说明
源镜像
是
可访问的外部镜像名称,如 ubuntu:18.04 或 nvcr.io/nvidia/tensorflow:23.06-tf2-py3
镜像名
是
导入到镜像仓库后的名称部分,即 上传镜像 中 <TARGET_IMAGE>
Tag 名称
是
导入到镜像仓库后的 Tag 部分,即 上传镜像 中 [:TAG]
镜像导入任务成功后,可参考 搜索镜像 查看已导入的镜像, 外部镜像仓库若无法被平台访问会导致镜像导入任务失败。
单击“创建”。
创建镜像构建任务
4.3 版本新增: 通过 Dockerfile 构建镜像
在左侧功能栏选择“资源管理->镜像管理”;
进入“镜像导入任务”分页;
单击右上角“创建镜像导入任务”;
“任务类型”选择“构建镜像”;
按照提示配置参数:
名称
必选项
说明
镜像名
是
导入到镜像仓库后的名称部分,即 上传镜像 中 <TARGET_IMAGE>
Tag 名称
是
导入到镜像仓库后的 Tag 部分,即 上传镜像 中 [:TAG]
Dockerfile
是
包含镜像构建的所有流程,详情请参考 Dockerfile 官方文档
镜像导入任务成功后,可参考 搜索镜像 查看已导入的镜像。
单击“创建”。
如果 Dockerfile 中包含 RUN
指令,会同时在镜像仓库中上传名为 <TARGET_IMAGE>/cache
的缓存镜像,
该镜像可以减少重复构建的时间,可参考 删除镜像 删除缓存镜像。
查看镜像导入任务详情
搜索镜像导入任务
在左侧功能栏选择“资源管理->镜像管理”;
进入“镜像导入任务”分页;
在下拉列表中,基于“名称”、“状态”或“任务类型”搜索镜像导入任务。
删除镜像导入任务
在左侧功能栏选择“资源管理->镜像管理”;
进入“镜像导入任务”分页;
单个删除:选择需要删除的“成功”或“失败”的镜像导入任务,单击“操作”按钮,在下拉列表中,单击“删除”;
批量删除:单击表格右上角“编辑”按钮,勾选多个需要删除的镜像导入任务,单击表格右上角“删除”按钮;
单击“确认删除”。
删除镜像导入任务不会影响已经成功导入的镜像。