全部产品
Search
文档中心

人工智能平台 PAI:在DSW中使用Docker

更新时间:Jul 01, 2026

DSW支持在实例的主容器中使用Docker命令启动和管理二级容器(子容器)。

如果您需要使用可视化操作界面启动子容器,参考子容器管理DockerBoard

使用限制

  • 目前二级容器功能仅支持由”灵骏资源组”或”1.0版本的通用资源组”创建的DSW实例。

  • 二级容器的Docker Daemon配置(/etc/docker/daemon.json)不支持在DSW实例内修改,无法自定义data-root、registry-mirrors等配置项。

  • 实例重启后,二级容器中的运行数据(包括构建的镜像)会丢失,无论是否启用云盘功能。建议及时保存重要的环境和数据。

  • Docker启动二级容器时,无法使用以下具有权限提升或安全风险的参数:

    参数

    说明

    --privileged

    赋予容器近乎宿主机的全部权限

    --ipc=host

    共享宿主机 IPC 命名空间

    --security-opt

    可绕过或修改容器安全策略

    --cap-add

    向容器追加 Linux 内核能力,扩大权限范围

    说明

    如果在使用docker run、docker create创建二级容器时遇到报错Error response from daemon: authorization denied by plugin authZ: Permission denied,说明使用了受限参数。

创建并配置DSW实例

创建DSW实例时配置如下关键参数,其他参数按需配置:

单击确定创建实例,后续您可参考操作二级容器

操作二级容器

启动二级容器

您可以使用下面的命令启动并进入二级容器:

docker run -it dsw-registry.cn-hangzhou.cr.aliyuncs.com/pai/pytorch:1.8PAI-gpu-py36-cu101-ubuntu18.04 /bin/bash

设备挂载:

  • 挂载GPU:可以使用--gpus=all挂载DSW实例内所有的GPU设备。

  • 挂载PPU:与GPU挂载不同,需要通过--device参数手动将PPU设备挂载到二级容器中:

    docker run -it --network=host \
      --device=/dev/alixpu_ppu0 \
      --device=/dev/alixpu \
      --device=/dev/alixpu_ctl \
      your-ppu-enabled-image
    说明

    二级容器的镜像内必须预先集成PPU运行所需的组件,否则无法使用PPU。

数据挂载:

您可以使用Docker Bind Mount,将数据通过数据集挂载存储路径挂载的方式挂载到DSW实例,再挂载到二级容器中访问(当前不支持Volume Mount和tmpfs Mount)。例如DSW实例在/mnt/data0/mnt/data1路径下挂载了数据,可使用-v参数或--mount参数将其Bind Mount到二级容器中:

# 在本例中,<dsw内路径>的取值可以是:/mnt/data0,/mnt/data1及其子路径。
# 其他路径暂时无法挂载进二级容器中。

# 使用-v参数
docker run -v <dsw内路径>:<二级容器内路径>[:选项] {image}

# 使用--mount参数
docker run  --mount type=bind,source=<dsw内路径>,target=<二级容器内路径>[,readonly] {image}

进入二级容器

您可以使用docker exec命令在运行中的容器内启动新的命令进程。

例如,以交互模式并打开标准输入(-i)和分配伪终端(-t)的方式启动bash shell:

docker exec -it your-container /bin/bash
说明

当前您无法使用例如--privileged等有安全风险的参数进入容器。

您也可以使用docker attach命令接入运行中容器的主进程终端。如果启动容器时打开了标准输入(-i)并分配了伪终端(-t),则可以看到容器内的标准输入/输出(stdin/stdout/stderr)并与其交互:

docker attach {容器id}
说明

安全退出attach模式(不中断容器)的默认快捷键是:Ctrl + p,然后Ctrl + q。这样您将从容器终端"分离"(detach),容器继续运行。

制作镜像

在DSW实例中,支持使用Dockerfile构建镜像:

docker build -t test-build .
说明

由于网络限制,无法直接拉取Docker Hub镜像。建议在使用FROM指定基础镜像时,使用阿里云容器镜像服务(ACR)中的镜像。

构建完成后使用如下命令查看镜像:

root@dsw-330808-8445dd65f4-mhnrt:/mnt/workspace/test# docker image ls
REPOSITORY          TAG         IMAGE ID       CREATED              SIZE
test-build          latest      fad7fdb5e81a   About a minute ago   15.4GB

镜像拉取

拉取公共镜像,以ACR公共镜像为例:

docker pull dsw-registry.cn-hangzhou.cr.aliyuncs.com/pai/pytorch:1.8PAI-gpu-py36-cu101-ubuntu18.04

如果需要拉取私有仓库镜像,先使用docker login命令登录:

docker login --username={用户名} registry.cn-hangzhou.aliyuncs.com

常见问题

Q:为什么在DSW实例中执行ps -aux命令看不到二级容器相关进程 ?

DSW中主容器和二级容器不共享pid namespace,因此在主容器内无法看到二级容器的进程。

Q:为什么从Docker Hub拉取镜像会失败 ?

由于网络限制,直接拉取Docker Hub官方镜像会失败。遇到如下报错:

root@dsw-381955:/mnt/workspace# docker run --network=host -it ubuntu /bin/bash
Unable to find image 'ubuntu:latest' locally
docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded.
See 'docker run --help'.

建议改为从阿里云容器镜像服务(ACR)的制品中心拉取镜像。或参考文档跨域拉取海外模型或容器镜像

Q:遇到如下报错:Error response from daemon: authorization denied by plugin authZ: Permission denied ?

这是因为使用了当前不支持的Docker命令或参数。如有疑问,请提交工单联系技术支持。

Q:遇到如下报错:Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running ?

请检查DSW实例内是否存在/var/docker/proxy/docker-proxy.sock文件。如果存在,执行以下命令后重试:

export DOCKER_HOST=unix:///var/docker/proxy/docker-proxy.sock

设置完成后再尝试执行Docker命令。