全部產品
Search
文件中心

Platform For AI:在DSW中使用Docker

更新時間:Jul 02, 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指定基礎鏡像時,使用阿里雲Container Registry(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'.

建議改為從阿里雲Container Registry(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命令。