全部产品
Search
文档中心

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

更新时间:May 19, 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参数,将/mnt/data0/mnt/data1路径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命令。