昇腾社区首页
中文
注册

Ascend Docker Runtime

  • 使用容器化支持、整卡调度、静态vNPU调度、动态vNPU调度、断点续训、弹性训练、推理卡故障恢复或推理卡故障重调度的用户,必须安装Ascend Docker Runtime
  • 仅使用资源监测的用户,可以不安装Ascend Docker Runtime,请直接跳过本章节。

前提条件

安装前,请确保runc文件的用户ID为0。

确认安装场景

目前仅支持root用户安装Ascend Docker Runtime,请根据实际情况选择对应的安装方式。

  1. 在任意节点执行以下命令,查询节点名称。
    kubectl get node
    回显示例如下:
    1
    2
    NAME       STATUS   ROLES           AGE   VERSION
    ubuntu     Ready    worker          23h   v1.17.3
    
  2. 在任意节点执行以下命令,查看当前节点的容器运行时。其中node-name为节点名称。
    • 不使用K8s场景
      docker --version      # Docker
      containerd --version     # Containerd
      • 若回显为Docker的版本信息,表示当前是Docker场景
      • 若回显为Containerd的版本信息,表示当前是Containerd场景
      • 若同时有DockerContainerd的版本信息,请用户自行确定任务所要使用的容器运行时。

Docker场景下安装Ascend Docker Runtime

K8s集成Docker场景安装Ascend Docker Runtime,与Docker场景下安装Ascend Docker Runtime操作一致。

  1. 安装包下载完成后,在所有节点,进入安装包(run包)所在路径。
    cd <path to run package>
  2. 执行以下命令,为软件包添加可执行权限。
    chmod u+x Ascend-docker-runtime_{version}_linux-{arch}.run
  3. 执行如下命令,校验软件包安装文件的一致性和完整性。
    ./Ascend-docker-runtime_{version}_linux-{arch}.run --check
    回显示例如下:
    1
    2
    3
    4
    [WARNING]: --check is meaningless for Ascend-docker-runtime and will be discarded in the future
    Verifying archive integrity... ./Ascend-docker-runtime_7.0.RC1_linux-x86_64.run does not contain an embedded SHA256 checksum.
    ...
     All good.
    
  4. 可通过以下命令安装Ascend Docker Runtime
    • 安装到默认路径下,执行以下命令。
      ./Ascend-docker-runtime_{version}_linux-{arch}.run --install
    • 安装到指定路径下,执行以下命令,“--install-path”参数为指定的安装路径。
      ./Ascend-docker-runtime_{version}_linux-{arch}.run --install --install-path=<path>

    Docker配置文件路径不是默认的“/etc/docker/daemon.json”时,需要新增--config-file-path参数,用于指定该配置文件路径。

    回显示例如下,表示安装成功。

    1
    2
    3
    4
    Uncompressing ascend-docker-runtime  100%
    [INFO]: installing ascend docker runtime
    ...
    [INFO] Ascend Docker Runtime install success
    
  5. 执行以下命令,使Ascend Docker Runtime生效。
    systemctl daemon-reload && systemctl restart docker

    Ascend Device Plugin在启动时会自动检测Ascend Docker Runtime是否存在,所以需要先启动Ascend Docker Runtime,再启动Ascend Device Plugin。若先启动Ascend Device Plugin后再启动Ascend Docker Runtime,需要参见Ascend Device Plugin章节重新启动Ascend Device Plugin

Containerd场景下安装Ascend Docker Runtime

  1. 安装包下载完成后,首先进入安装包(run包)所在路径。
    cd <path to run package>
  2. 执行以下命令,为软件包添加可执行权限。
    chmod u+x Ascend-docker-runtime_{version}_linux-{arch}.run
  3. 执行如下命令,校验软件包安装文件的一致性和完整性。
    ./Ascend-docker-runtime_{version}_linux-{arch}.run --check
    回显示例如下:
    [WARNING]: --check is meaningless for Ascend-docker-runtime and will be discarded in the future
    Verifying archive integrity... ./Ascend-docker-runtime_7.0.RC1_linux-x86_64.run does not contain an embedded SHA256 checksum.
    ...
     All good.
  4. 可通过以下命令安装Ascend Docker Runtime
    • 安装到默认路径下。
      /Ascend-docker-runtime_{version}_linux-{arch}.run --install --install-scene=containerd
    • 安装到指定路径下,执行以下命令,“--install-path”参数为指定的安装路径。
      /Ascend-docker-runtime_{version}_linux-{arch}.run --install --install-scene=containerd --install-path=<path>

      Containerd的配置文件路径不是默认的“/etc/containerd/config.toml”时,需要新增--config-file-path参数,用于指定该配置文件路径。

    回显示例如下,表示安装成功。
    Uncompressing ascend-docker-runtime  100%
    [INFO]: installing ascend docker runtime
    ...
    [INFO] Ascend Docker Runtime install success
  5. (可选)如果安装失败,可参照以下步骤修改Containerd配置文件。
    1. 修改配置文件。
      • Containerd无默认配置文件场景:依次执行以下命令,创建并修改配置文件。
        mkdir /etc/containerd
        containerd config default > /etc/containerd/config.toml
        vim /etc/containerd/config.toml
      • Containerd已有配置文件场景:打开并修改配置文件。
        vim /etc/containerd/config.toml
    2. 执行以下命令查询当前cgroup的版本。
      stat -fc %T /sys/fs/cgroup/
      • 若回显为tmpfs,表示当前为cgroup v1版本。
      • 若回显为cgroup2fs,表示当前为cgroup v2版本
    3. 根据cgroup的版本修改runtime_type字段,并修改Ascend Docker Runtime安装路径,示例如下加粗部分所示。
      • cgroup v1
            [plugins."io.containerd.grpc.v1.cri".containerd.runtimes] 
               [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]  
                 runtime_type = "io.containerd.runtime.v1.linux" 
                 runtime_engine = "" 
                 runtime_root = "" 
                 privileged_without_host_devices = false 
                 base_runtime_spec = "" 
                 [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] 
           [plugins."io.containerd.grpc.v1.cri".cni] 
             bin_dir = "/opt/cni/bin" 
             conf_dir = "/etc/cni/net.d" 
             max_conf_num = 1 
             conf_template = "" 
         [plugins."io.containerd.grpc.v1.cri".registry] 
             [plugins."io.containerd.grpc.v1.cri".registry.mirrors] 
               [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"] 
                 endpoint = ["https://registry-1.docker.io"] 
         [plugins."io.containerd.grpc.v1.cri".image_decryption] 
             key_model = "" 
         
        ...
         [plugins."io.containerd.monitor.v1.cgroups"] 
           no_prometheus = false 
         [plugins."io.containerd.runtime.v1.linux"] 
           shim = "containerd-shim" 
           runtime = "/usr/local/Ascend/Ascend-Docker-Runtime/ascend-docker-runtime"   
           runtime_root = "" 
           no_shim = false 
           shim_debug = false 
         [plugins."io.containerd.runtime.v2.task"] 
           platforms = ["linux/amd64"] 
        ...
      • cgroup v2
                [plugins."io.containerd.grpc.v1.cri".containerd.default_runtime.options]
              [plugins."io.containerd.grpc.v1.cri".containerd.runtimes]
                [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
                  base_runtime_spec = ""
                  cni_conf_dir = ""
                  cni_max_conf_num = 0
                  container_annotations = []
                  pod_annotations = []
                  privileged_without_host_devices = false
                  runtime_engine = ""
                  runtime_path = ""
                  runtime_root = ""
                  runtime_type = "io.containerd.runc.v2"
                  [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
                    BinaryName = "/usr/local/Ascend/Ascend-Docker-Runtime/ascend-docker-runtime"
                    CriuImagePath = ""
                    CriuPath = ""
                    CriuWorkPath = ""
                    IoGid = 0
                    IoUid = 0
                    NoNewKeyring = false
                    NoPivotRoot = false
                    Root = ""
                    ShimCgroup = ""
                    SystemdCgroup = true
        ...
  6. 执行以下命令,重启Containerd
    systemctl daemon-reload && systemctl restart containerd

K8s集成Containerd场景下安装Ascend Docker Runtime

  1. 安装包下载完成后,首先进入安装包(run包)所在路径。
    cd <path to run package>
  2. 执行以下命令,为软件包添加可执行权限。
    chmod u+x Ascend-docker-runtime_{version}_linux-{arch}.run
  3. 执行如下命令,校验软件包安装文件的一致性和完整性。
    ./Ascend-docker-runtime_{version}_linux-{arch}.run --check
    回显示例如下:
    [WARNING]: --check is meaningless for Ascend-docker-runtime and will be discarded in the future
    Verifying archive integrity... ./Ascend-docker-runtime_7.0.RC1_linux-x86_64.run does not contain an embedded SHA256 checksum.
    ...
     All good.
  4. 可通过以下命令安装Ascend Docker Runtime
    • 安装到默认路径下。
      /Ascend-docker-runtime_{version}_linux-{arch}.run --install --install-scene=containerd
    • 安装到指定路径下,执行以下命令,“--install-path”参数为指定的安装路径。
      /Ascend-docker-runtime_{version}_linux-{arch}.run --install --install-scene=containerd --install-path=<path>
    回显示例如下,表示安装成功。
    Uncompressing ascend-docker-runtime  100%
    [INFO]: installing ascend docker runtime
    ...
    [INFO] Ascend Docker Runtime install success
  5. (可选)如果安装失败,可参照以下步骤修改Containerd配置文件。
    1. 修改配置文件。
      • Containerd无默认配置文件场景:依次执行以下命令,创建并修改配置文件。
        mkdir /etc/containerd
        containerd config default > /etc/containerd/config.toml
        vim /etc/containerd/config.toml
      • Containerd已有配置文件场景:打开并修改配置文件。
        vim /etc/containerd/config.toml
    2. 执行以下命令查询当前cgroup的版本。
      stat -fc %T /sys/fs/cgroup/
      • 若回显为tmpfs,表示当前为cgroup v1版本。
      • 若回显为cgroup2fs,表示当前为cgroup v2版本
    3. 根据cgroup的版本修改runtime_type字段,并修改Ascend Docker Runtime安装路径,示例如下加粗部分所示。
      • cgroup v1
            [plugins."io.containerd.grpc.v1.cri".containerd.runtimes] 
               [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]  
                 runtime_type = "io.containerd.runtime.v1.linux" 
                 runtime_engine = "" 
                 runtime_root = "" 
                 privileged_without_host_devices = false 
                 base_runtime_spec = "" 
                 [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] 
           [plugins."io.containerd.grpc.v1.cri".cni] 
             bin_dir = "/opt/cni/bin" 
             conf_dir = "/etc/cni/net.d" 
             max_conf_num = 1 
             conf_template = "" 
         [plugins."io.containerd.grpc.v1.cri".registry] 
             [plugins."io.containerd.grpc.v1.cri".registry.mirrors] 
               [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"] 
                 endpoint = ["https://registry-1.docker.io"] 
         [plugins."io.containerd.grpc.v1.cri".image_decryption] 
             key_model = "" 
         
        ...
         [plugins."io.containerd.monitor.v1.cgroups"] 
           no_prometheus = false 
         [plugins."io.containerd.runtime.v1.linux"] 
           shim = "containerd-shim" 
           runtime = "/usr/local/Ascend/Ascend-Docker-Runtime/ascend-docker-runtime"   
           runtime_root = "" 
           no_shim = false 
           shim_debug = false 
         [plugins."io.containerd.runtime.v2.task"] 
           platforms = ["linux/amd64"] 
        ...
      • cgroup v2
                [plugins."io.containerd.grpc.v1.cri".containerd.default_runtime.options]
              [plugins."io.containerd.grpc.v1.cri".containerd.runtimes]
                [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
                  base_runtime_spec = ""
                  cni_conf_dir = ""
                  cni_max_conf_num = 0
                  container_annotations = []
                  pod_annotations = []
                  privileged_without_host_devices = false
                  runtime_engine = ""
                  runtime_path = ""
                  runtime_root = ""
                  runtime_type = "io.containerd.runc.v2"
                  [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
                    BinaryName = "/usr/local/Ascend/Ascend-Docker-Runtime/ascend-docker-runtime"
                    CriuImagePath = ""
                    CriuPath = ""
                    CriuWorkPath = ""
                    IoGid = 0
                    IoUid = 0
                    NoNewKeyring = false
                    NoPivotRoot = false
                    Root = ""
                    ShimCgroup = ""
                    SystemdCgroup = true
        ...
  6. 如需将节点上的容器运行时从Docker更改为Containerd,需要修改节点上kubelet的配置文件kubeadm-flags.env。详情请参见K8s官方文档
  7. 如果存在Docker服务,请执行以下命令停止对应服务。
    systemctl stop docker
  8. 执行命令,重启Containerdkubelet,示例如下。
    systemctl daemon-reload && systemctl restart containerd kubelet

Ascend Docker Runtime安装包命令行参数说明

参数说明如表1所示。

表1 安装包支持的参数说明

参数

说明

--help | -h

查询帮助信息。

--info

查询软件包构建信息。在未来某个版本将废弃该参数。

--list

查询软件包文件列表。在未来某个版本将废弃该参数。

--check

检查软件包的一致性和完整性。在未来某个版本将废弃该参数。

--quiet

静默安装,跳过交互式信息,需要配合install、uninstall或者upgrade使用。在未来某个版本将废弃该参数。

--noexec

解压软件包到当前目录,但不执行安装脚本。配套--extract=<path>使用,格式为--noexec --extract=<path>。在未来某个版本将废弃该参数。

--extract=<path>

解压软件包中文件到指定目录,需要配合--noexec参数一起使用。在未来某个版本将废弃该参数。

--tar arg1 [arg2 ...]

对软件包执行tar命令,使用tar后面的参数作为命令的参数。例如执行--tar xvf命令,解压run安装包的内容到当前目录。在未来某个版本将废弃该参数。

--install

安装软件包。可以指定安装路径--install-path=<path>,也可以不指定安装路径,直接安装到默认路径下。

--install-path=<path>

指定安装路径。当环境上存在全局配置文件“ascend_dcoker_runtime_install.info”时,指定的安装路径必须与全局配置文件中保存的安装路径保持一致。如用户想更换安装路径,需先卸载原路径下的Ascend Docker Runtime软件包并确保全局配置文件“ascend_docker_runtime_install.info”已被删除。

  • 若5.0.RC1版本之前的Ascend Docker Runtime是通过ToolBox安装包安装的,则该文件不存在,不需要删除。
  • 若不指定安装路径,将安装到默认路径“/usr/local/Ascend”
  • 若通过该参数指定了安装目录,运行用户需要对指定的安装路径有读写权限。

--install-scene=<scene>

Ascend Docker Runtime安装场景。默认值为docker,取值说明如下。

  • docker:表示在Docker(或K8s集成Docker)场景安装。
  • containerd:表示在Containerd(或K8s集成Containerd)场景安装。
  • isula:表示在iSula容器引擎场景下安装。

--uninstall

卸载软件。如果安装时指定了安装路径,那么卸载时也需要指定安装路径,安装路径的参数为--install-path=<path>。

--upgrade

升级软件。如果安装时指定了安装路径,那么升级时也需要指定安装路径,安装路径的参数为--install-path=<path>。

--config-file-path=<path>

DockerContainerd的配置文件路径。不指定该参数时默认使用以下路径。

  • Docker: /etc/docker/daemon.json
  • Containerd: /etc/containerd/config.toml

--install-type=<type>

仅支持在以下产品安装或升级Ascend Docker Runtime时使用该参数:
  • Atlas 200 AI加速模块(RC场景)
  • Atlas 200I A2 加速模块(RC场景)
  • Atlas 200I DK A2 开发者套件
  • Atlas 200I SoC A1 核心板
  • Atlas 500 智能小站(型号 3000)
  • Atlas 500 A2 智能小站
该参数用于设置Ascend Docker Runtime的默认挂载内容,且需要配合“--install”一起使用,格式为--install --install-type=<type>。<type>可选值为:
  • A200
  • A200ISoC
  • A200IA2(支持Atlas 200I A2 加速模块(RC场景)和Atlas 200I DK A2 开发者套件
  • A500
  • A500A2

--ce=<ce>

  • 仅在使用iSula启动容器时需要指定该参数,参数值为isula。并且需要配合--install或者--uninstall一起使用,不能单独使用。
  • 不支持和--install-scene同时使用。建议使用--install-scene替代--ce参数。后续--ce会废弃。

--version

查询Ascend Docker Runtime版本。