文档
注册

制作基础镜像

本章节以HCCL-Controller为例,介绍了制作MindX DL组件容器部署的镜像制作示例,软件包中的Dockerfile仅作为参考,用户可基于本示例制作定制化镜像。用户也可以从昇腾镜像仓库获取基于制作镜像示例中的步骤制作好的MindX DL各组件的镜像,具体操作可参考从昇腾镜像仓库拉取镜像。镜像制作完成后,请及时进行安全加固。如修复基础镜像的漏洞、安装第三方依赖导致的漏洞等。

从昇腾镜像仓库拉取镜像

  1. 确保服务器能访问互联网后,访问昇腾镜像仓库
  2. 在左侧导航栏选择“MindX DL”。然后根据下表选择组件对应的镜像。
    表1 镜像列表

    组件

    镜像名称

    镜像tag

    拉取镜像的节点

    说明

    Resilience-Controller

    resilience-controller

    v3.0.0

    管理节点

    拉取的镜像需要重命名后才能使用组件启动yaml进行部署,可参考3

    Volcano

    v1.4.0-3.0.0

    HCCL-Controller

    hccl-controller

    v3.0.0

    NodeD

    noded

    v3.0.0

    计算节点

    NPU-Exporter

    npu-exporter

    v3.0.0

    Ascend Device Plugin

    ascend-k8sdeviceplugin

    v3.0.0

    • 若无下载权限,请根据页面提示申请权限。提交申请后等待管理员审核,审核通过后即可下载镜像。
    • 若执行docker login命令时失败,可能是由于未配置代理导致,可参考配置代理登录昇腾镜像仓库章节解决。
  3. 昇腾镜像仓库中拉取的MindX DL镜像与组件启动yaml中的名字不一致,需要重命名拉取的镜像后才能启动。根据以下步骤将2中获取的镜像重新命名,同时建议删除原始名字的镜像。具体操作如下。
    1. 执行以下命令,重命名镜像(用户需根据所使用的组件,选取对应命令执行)。
      docker tag ascendhub.huawei.com/public-ascendhub/resilience-controller:v3.0.0 resilience-controller:v3.0.0
      
      docker tag ascendhub.huawei.com/public-ascendhub/npu-exporter:v3.0.0 npu-exporter:v3.0.0
      
      docker tag ascendhub.huawei.com/public-ascendhub/ascend-k8sdeviceplugin:v3.0.0 ascend-k8sdeviceplugin:v3.0.0
      
      docker tag ascendhub.huawei.com/public-ascendhub/vc-controller-manager:v1.4.0 volcanosh/vc-controller-manager:v1.4.0
      
      docker tag ascendhub.huawei.com/public-ascendhub/vc-scheduler:v1.4.0 volcanosh/vc-scheduler:v1.4.0
      
      docker tag ascendhub.huawei.com/public-ascendhub/noded:v3.0.0 noded:v3.0.0
      
      docker tag ascendhub.huawei.com/public-ascendhub/hccl-controller:v3.0.0 hccl-controller:v3.0.0
    2. (可选)执行以下命令,删除原始名字镜像(用户需根据所使用的组件,选取对应命令执行)。
      docker rmi ascendhub.huawei.com/public-ascendhub/resilience-controller:v3.0.0
      docker rmi ascendhub.huawei.com/public-ascendhub/npu-exporter:v3.0.0
      docker rmi ascendhub.huawei.com/public-ascendhub/ascend-k8sdeviceplugin:v3.0.0
      docker rmi ascendhub.huawei.com/public-ascendhub/vc-controller-manager:v1.4.0
      docker rmi ascendhub.huawei.com/public-ascendhub/vc-scheduler:v1.4.0
      docker rmi ascendhub.huawei.com/public-ascendhub/noded:v3.0.0
      docker rmi ascendhub.huawei.com/public-ascendhub/hccl-controller:v3.0.0

制作镜像

  1. 获取MindX DL各组件软件包,请参见准备软件包
  2. 将软件包上传到服务器任意目录,然后按组件名创建对应的目录,并将组件的软件包放到里面,然后解压。(以HCCL-Controller为例,放到目录“/home/ascend-hccl-controller”
    root@ubuntu:/home/ascend-hccl-controller# ll
    total 66328
    drwxr-xr-x 3 root root     4096 Jun 24 20:24 ./
    drwxr-x--- 9 root root     4096 Jun 24 20:24 ../
    -r-x------ 1 root root 31313408 Jun 22 04:00 cert-importer*
    -r-------- 1 root root      677 Jun 22 04:00 Dockerfile
    -r-x------ 1 root root 36578912 Jun 22 04:00 hccl-controller*
    -r-------- 1 root root     2493 Jun 22 04:00 hccl-controller-v3.0.RC3.yaml
    -r-------- 1 root root     1611 Jun 22 04:00 hccl-controller-without-token-v3.0.RC3.yaml
    dr-xr-x--- 2 root root     4096 Jun 22 04:00 lib/
  3. 按照以下命令检查基础镜像是否存在。
    • 检查ubuntu镜像示例,ARM架构和X86架构镜像大小有差异。
      root@ubuntu:# docker images | grep ubuntu
      ubuntu              18.04               6526a1858e5d        2 years ago         64.2MB
    • 检查alpine镜像示例,ARM架构和X86架构镜像大小有差异。
      root@ubuntu:# docker images | grep alpine
      alpine              latest              a24bb4013296        2 years ago         5.57MB

    如镜像不存在,使用表2拉取基础镜像,需要服务器能联网;或者导入离线的基础镜像包。

    表2 获取基础镜像命令

    基础镜像

    拉取镜像命令

    说明

    ubuntu:18.04

    docker pull ubuntu:18.04

    拉取时自动识别系统架构

    alpine:latest

    • X86架构

      docker pull alpine:latest

    • ARM架构

      docker pull arm64v8/alpine:latest

      docker tag arm64v8/alpine:latest alpine:latest

    -

  4. 依次进入解压目录,执行docker build命令制作镜像,命令参考如下表。
    表3 各节点镜像制作命令

    组件

    镜像制作命令

    说明

    Ascend Device Plugin

    docker build --no-cache -t ascend-k8sdeviceplugin:{tag} ./

    • {tag}需要参考软件包上的版本。如:软件包上版本为3.0.RC3,则{tag}为v3.0.RC3
    • NPU-Exporter、Ascend Device Plugin和License-Manager容器部署使用的Dockerfile文件请在开源社区获取。

    NPU-Exporter

    docker build --no-cache -t npu-exporter:{tag} ./

    HCCL-Controller

    docker build --no-cache -t hccl-controller:{tag} ./

    Resilience-Controller

    docker build --no-cache -t resilience-controller:{tag} ./

    NodeD

    docker build --no-cache -t noded:{tag} ./

    Volcano

    • docker build --no-cache -t volcanosh/vc-scheduler:v1.4.0 ./ -f ./Dockerfile-scheduler
    • docker build --no-cache -t volcanosh/vc-controller-manager:v1.4.0 ./ -f ./Dockerfile-controller

    -

    以HCCL-Controller组件的镜像制作为例:
    root@ubuntu:/home/ascend-hccl-controller# docker build --no-cache -t hccl-controller:v3.0.RC3 .
    Sending build context to Docker daemon  75.82MB
    Step 1/7 : FROM ubuntu:18.04 as build
     ---> 6526a1858e5d
    Step 2/7 : RUN useradd -d /home/hwMindX -u 9000 -m -s /usr/sbin/nologin hwMindX &&     usermod root -s /usr/sbin/nologin
     ---> Running in 982af8c5c938
    Removing intermediate container 982af8c5c938
     ---> ef8b3fbb5755
    Step 3/7 : COPY ./hccl-controller  /usr/local/bin/
     ---> 44672aedff7d
    Step 4/7 : COPY ./lib  /usr/local/lib
     ---> e99324c9bac7
    Step 5/7 : RUN chown -R hwMindX:hwMindX /usr/local/bin  &&    chown -R hwMindX:hwMindX /usr/local/lib &&    chmod 750 /home/hwMindX &&    chmod 550 /usr/local/bin/ &&    chmod 550 /usr/local/lib/ &&    chmod 500 /usr/local/lib/* &&    chmod 500 /usr/local/bin/hccl-controller &&    echo 'umask 027' >> /etc/profile &&     echo 'source /etc/profile' >> /home/hwMindX/.bashrc
     ---> Running in 75bd6c80f11b
    Removing intermediate container 75bd6c80f11b
     ---> 8e86333dee49
    Step 6/7 : ENV LD_LIBRARY_PATH=/usr/local/lib
     ---> Running in a26ff750f047
    Removing intermediate container a26ff750f047
     ---> 37d48e8ec218
    Step 7/7 : USER hwMindX
     ---> Running in d441db379be8
    Removing intermediate container d441db379be8
     ---> ef2acbb5a335
    Successfully built ef2acbb5a335
    Successfully tagged hccl-controller:v3.0.RC3
  5. 满足以下场景可以跳过本步骤。
    • 已将制作好的镜像上传到私有镜像仓库,各节点可以通过私有镜像仓库拉取MindX DL组件的镜像。
    • 已在各节点制作好了节点需要安装的MindX DL组件的镜像,可通过组件安装位置确认组件安装位置。
    如不满足上述场景,则需要手动分发镜像到各节点。以HCCL-Controller组件为例,使用离线镜像包的方式,分发镜像到其他节点。
    1. 将制作完成的镜像保存成离线镜像。
      docker save hccl-controller:v3.0.RC3 > hccl-controller-v3.0.RC3-linux-arrch64.tar
    2. 将镜像拷贝到其他节点。
      scp hccl-controller-v3.0.RC3-linux-arrch64.tar root@{目标节点IP地址}:保存路径
    3. 以root用户登录各个节点载入离线镜像。
      docker load < hccl-controller-v3.0.RC3-linux-arrch64.tar
表4 MindX DL组件镜像配套表

组件

镜像名

说明

HCCL-Controller

hccl-controller:v3.0.RC3

  1. Volcano组件需要同时使用两个镜像。
  2. v3.0.RC3为镜像tag。

Volcano

volcanosh/vc-scheduler:v1.4.0

volcanosh/vc-controller-manager:v1.4.0

Resilience-Controller

resilience-controller:v3.0.RC3

Ascend Device Plugin

ascend-k8sdeviceplugin:v3.0.RC3

NPU-Exporter

npu-exporter:v3.0.RC3

NodeD

noded:v3.0.RC3

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词