镜像管理

镜像分为“我的镜像”和“镜像收藏”。

  • 我的镜像

    单个项目内共享,项目间互相隔离,支持 读写 权限。

  • 镜像收藏

    资源仓库 中收藏的镜像,仅支持 只读 权限。

登录镜像仓库

  1. 左侧功能栏选择“资源管理->镜像管理”;

  2. 单击右上角“上传”,查看操作说明。

    ../../_images/upload_image.png

    图 274 上传镜像说明

  3. 安装 Docker

    请参考官方文档 https://docs.docker.com/get-docker/

    Windows 和 macOS 用户可以安装 Docker Desktop;Linux 用户可以安装 Docker CE 命令行版。 Linux 用户也可以选择 国内的镜像源 加速安装 Docker。

    推荐使用 Linux 系统。

  4. non-root 用户使用 Docker

    该步骤为可选操作,如果 Docker Daemon 服务以 rootless 模式启动,如在公共服务器上使用 Docker, 请参考官方文档 https://docs.docker.com/engine/security/rootless/ 完成配置。

  5. 登录镜像仓库

    docker login <DOCKER_REGISTRY>
    

    此命令中:

    <DOCKER_REGISTRY>

    是镜像仓库地址,如上图 docker-user.example.com:30080

    该命令会提示输入用户名和密码,使用登录平台的用户名密码即可。

登录时的常见问题

  1. 提示 server gave HTTP response to HTTPS client

    说明平台没有配置 HTTPS。需要给 Docker 配置 insecure-registries , Linux 可参考如下步骤:

    1. 编辑 /etc/docker/daemon.json 文件,rootless 模式下的用户编辑 ~/.config/docker/daemon.json 文件, 如果不存在则新建一个。

      加入以下内容:

      {
        "insecure-registries": [
           "docker-user.example.com:30080"
        ]
      }
      
    2. 运行 sudo systemctl reload docker,rootless 模式下的用户运行 systemctl --user reload docker, 使配置生效。

    其他操作系统可参考官方文档:https://docs.docker.com/registry/insecure/#deploy-a-plain-http-registry

  2. 提示域名无法解析,如 lookup docker-user.example.com on 127.0.0.53:53: no such host

    首先确保镜像仓库地址已经换成了平台显示的地址,而不是文档中的示例。

    如果平台显示的地址无法解析,需要咨询管理员如何配置 /etc/hosts 文件。

我的镜像

上传镜像

需要先登录镜像仓库,然后命令行中使用 Docker 执行以下操作:

  1. 设置镜像 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 官方文档

  2. 上传到镜像仓库

    docker push <DOCKER_REGISTRY>/<PROJECT>/<IMAGE>[:TAG]
    

    <DOCKER_REGISTRY>/<PROJECT>/<IMAGE>[:TAG] 即为上一步中设置的镜像名称和 Tag。

    关于 docker push 命令的使用方式,请参考 docker push 官方文档

编辑镜像

2.3 版本新增: 镜像属性增加适用的人工智能板卡类型。

用户可以修改已上传镜像的“适用范围”、“标签”、“人工智能板卡类型”和“备注”,操作步骤:

  1. 左侧功能栏选择“资源管理->镜像管理”;

  2. 选择需要编辑的镜像,单击该镜像的“操作”按钮;

  3. 在下拉列表中,单击“编辑”;

  4. 修改镜像“适用范围”、“标签”、“人工智能板卡类型”和“备注”;

  5. 单击“确定”。

    ../../_images/edit_image.png

    图 275 编辑镜像

在镜像 Tag 列表页,可以使用相同步骤编辑 Tag 的备注信息。

只有添加了相应的适用范围,该镜像才能在对应功能里被选择使用。

修改适用范围之后,在相关应用的克隆创建页,仍会显示该镜像的名字,但会有删除线的标记。

搜索镜像

  1. 左侧功能栏选择“资源管理->镜像管理”;

  2. 单击左上角搜索框;

  3. 在下拉列表中,可基于“镜像名”、“适用功能”和“标签”搜索镜像。

    ../../_images/search_image.png

    图 276 搜索镜像

删除镜像

用户可以删除镜像的一个 Tag 或者整个镜像。

  1. 左侧功能栏选择“资源管理->镜像管理”;

  2. 选择需要删除的镜像,单击“操作”按钮;或者进入 Tag 列表页,选择要删除的 Tag,单击“操作”按钮;

  3. 在下拉列表中,单击“删除”;

  4. 单击“确定”。

    删除之后,在相关应用的克隆页,仍会显示该镜像的名字,但会有删除线的标记。

拉取镜像

操作之前需要先登录镜像仓库。

  1. 左侧功能栏选择“资源管理->镜像管理”;

  2. 选择需要拉取的镜像,单击该镜像名,进入 Tag 列表页;

  3. 选择需要拉取的 Tag ,单击“拉取命令”,复制镜像拉取命令;

  4. 在命令行粘贴并运行。

    ../../_images/pull_image.png

    图 277 拉取镜像

镜像收藏

具体参见 资源收藏

镜像导入任务

4.2 版本新增: 导入外部镜像到镜像仓库。

支持从外部镜像仓库导入镜像到算力平台镜像仓库。

创建镜像拉取任务

  1. 在左侧功能栏选择“资源管理->镜像管理”;

  2. 进入“镜像导入任务”分页;

  3. 单击右上角“创建镜像导入任务”;

  4. “任务类型”选择“拉取镜像”;

  5. 按照提示配置参数:

    表 210 创建镜像拉取任务

    名称

    必选项

    说明

    源镜像

    可访问的外部镜像名称,如 ubuntu:18.04 或 nvcr.io/nvidia/tensorflow:23.06-tf2-py3

    镜像名

    导入到镜像仓库后的名称部分,即 上传镜像 中 <TARGET_IMAGE>

    Tag 名称

    导入到镜像仓库后的 Tag 部分,即 上传镜像 中 [:TAG]

    ../../_images/create_image_pull_job.png

    图 278 创建镜像导入任务

    镜像导入任务成功后,可参考 搜索镜像 查看已导入的镜像, 外部镜像仓库若无法被平台访问会导致镜像导入任务失败。

  6. 单击“创建”。

创建镜像构建任务

4.3 版本新增: 通过 Dockerfile 构建镜像

  1. 在左侧功能栏选择“资源管理->镜像管理”;

  2. 进入“镜像导入任务”分页;

  3. 单击右上角“创建镜像导入任务”;

  4. “任务类型”选择“构建镜像”;

  5. 按照提示配置参数:

    表 211 创建镜像构建任务

    名称

    必选项

    说明

    镜像名

    导入到镜像仓库后的名称部分,即 上传镜像 中 <TARGET_IMAGE>

    Tag 名称

    导入到镜像仓库后的 Tag 部分,即 上传镜像 中 [:TAG]

    Dockerfile

    包含镜像构建的所有流程,详情请参考 Dockerfile 官方文档

    ../../_images/create_image_build_job.png

    图 279 创建镜像导入任务

    镜像导入任务成功后,可参考 搜索镜像 查看已导入的镜像。

  6. 单击“创建”。

如果 Dockerfile 中包含 RUN 指令,会同时在镜像仓库中上传名为 <TARGET_IMAGE>/cache 的缓存镜像, 该镜像可以减少重复构建的时间,可参考 删除镜像 删除缓存镜像。

查看镜像导入任务详情

  1. 在左侧功能栏选择“资源管理->镜像管理”;

  2. 进入“镜像导入任务”分页;

  3. 单击镜像导入任务“名称”,进入镜像导入任务详情页,可查看镜像名称、镜像 Tag、源镜像、Dockerfile 等信息;

  4. 在镜像导入任务详情页,单击上方“监控 ”功能,可查看 CPU、内存、网络流量等资源利用率;

  5. 在镜像导入任务详情页,单击上方“日志”功能,可查看日志、事件信息。

搜索镜像导入任务

  1. 在左侧功能栏选择“资源管理->镜像管理”;

  2. 进入“镜像导入任务”分页;

  3. 在下拉列表中,基于“名称”、“状态”或“任务类型”搜索镜像导入任务。

删除镜像导入任务

  1. 在左侧功能栏选择“资源管理->镜像管理”;

  2. 进入“镜像导入任务”分页;

  3. 单个删除:选择需要删除的“成功”或“失败”的镜像导入任务,单击“操作”按钮,在下拉列表中,单击“删除”;

  4. 批量删除:单击表格右上角“编辑”按钮,勾选多个需要删除的镜像导入任务,单击表格右上角“删除”按钮;

  5. 单击“确认删除”。

    删除镜像导入任务不会影响已经成功导入的镜像。