全部產品
Search
文件中心

Platform For AI:在DSW中使用Docker

更新時間:May 20, 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指定基礎鏡像時,使用阿里雲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命令。