DSW 子容器允許使用者在一個 DSW 執行個體內通過 Docker in Docker(DinD)技術建立和管理多個二級容器,實現環境隔離和資源管理。其在控制台提供可視化操作介面,支援子容器的建立、啟停、刪除以及 SSH 遠端存取。
應用情境
在同一 DSW 執行個體中隔離不同的開發環境,對比驗證不同鏡像下的訓練效果。
在 GPU 資源緊張時,通過建立不同鏡像的子容器來切換運行環境,無需重建執行個體重新排隊。
多人共用一個 DSW 執行個體時,通過子容器實現開發人員之間的環境隔離和資源隔離。
前提條件
目前,子容器功能僅支援由“靈駿資源群組”或“1.0版本的通用資源群組”建立的DSW執行個體。
執行個體管理員(即執行個體建立者/Owner)需擁有 DSW 執行個體的建立和系統管理權限。
DSW 執行個體需在建立時開啟启用多容器隔离 (DinD)功能。
如果需要通過 SSH 訪問子容器,DSW 執行個體需同時開啟 SSH 功能。
角色與許可權說明
子容器管理涉及兩類角色:
執行個體管理員(Owner):即 DSW 執行個體的建立者,負責執行個體層級的組態管理,包括開啟 DinD、配置訪問限制、設定子容器數量上限和資料目錄隔離規則。
子容器開發人員:擁有工作空間相應角色(如演算法開發)或 RAM 許可權的使用者,可以查看子容器列表、建立自己的子容器、通過 SSH 登入使用子容器。每個開發人員只能啟停、刪除自己建立的子容器,但可以查看全部子容器的資訊。
許可權控制支援兩種方式:
基於工作空間角色:執行個體管理員可在執行個體配置中限制特定角色(如演算法開發)訪問主容器,被限制的角色只能通過子容器進行開發工作。理解成本低,適合大多數情境。
基於 RAM 策略:通過配置 RAM Policy 實現更細粒度的許可權控制,可將許可權細化到特定執行個體的特定子容器。適合對許可權管控要求更高的企業客戶。
執行個體管理員操作指南
建立執行個體時開啟多容器隔離
登入 PAI 控制台,進入 DSW 頁面,點擊创建实例。
在執行個體配置中,找到启用多容器隔离 (DinD)開關並開啟。
開啟後,會出現以下配置項:
限制访问主容器的角色:下拉選擇需要限制的工作空間角色。被限制的角色將無法直接開啟和操作 DSW 主容器,只能通過SSH登入到子容器進行開發。
例如:選擇算法开发後,擁有演算法開發角色的使用者將無法進入主容器,但仍可在執行個體詳情頁的子容器管理中建立和使用自己的子容器。
如果不選擇任何角色,則所有有許可權的使用者都可以正常訪問主容器,和現有行為一致。
子容器数量上限:設定該執行個體允許建立的子容器最大數量,支援配置 1~16 的整數,預設值為 10。
数据目录隔离配置:指定資料目錄隔離設定檔在主容器內的路徑,預設為
/etc/docker/dockerboard/mount_access.json。該設定檔用於控制不同使用者建立子容器時可掛載的資料目錄範圍。可先單擊配置模板下载擷取設定檔範本,後續配置步驟請參見配置資料目錄隔離。
完成其他執行個體配置後,提交建立即可。
配置資料目錄隔離
資料目錄隔離用於控制不同開發人員在建立子容器時可以掛載的資料目錄範圍,防止開發人員越權訪問其他人的儲存資料。
配置步驟:
在執行個體建立/編輯頁面中,單擊数据目录隔离配置下方的配置模板下载連結,擷取 JSON 模板檔案。
按照模板格式,填寫阿里雲子帳號 UID 與該使用者可訪問的 DSW 主容器內目錄的映射關係。
將編輯好的
mount_access.json檔案放置到 DSW 主容器中配置路徑所指定的位置(預設為/etc/docker/dockerboard/mount_access.json)。
設定檔格式:
設定檔為 JSON 格式,以阿里雲子帳號 UID 為 key,每個使用者可配置 Allow(允許掛載的目錄列表)和 Deny(禁止掛載的目錄列表)兩個欄位。樣本如下:
{
"123124432xxx": {
"Allow": [
"/mnt/workspace",
"/mnt/data1"
],
"Deny": [
"/mnt/data2"
]
},
"224321234xxx": {
"Allow": [
"*"
]
}
}各欄位說明:
欄位 | 說明 |
key(如 | 阿里雲子帳號的 UID |
Allow | 允許該使用者掛載的主容器目錄列表。設定為 |
Deny | 禁止該使用者掛載的主容器目錄列表。優先順序高於 Allow,即使 Allow 中包含某目錄,Deny 中同時存在則不允許掛載。該欄位可省略 |
配置生效規則:
如果設定檔存在且格式有效,系統在子容器建立時會校正目前使用者是否有許可權掛載所選目錄。
如果設定檔中找不到目前使用者的對應記錄,該使用者在建立子容器時將不允許掛載資料目錄,頁面會提示:"您的帳號沒有可用的 DSW 路徑,如有掛載需求,請聯絡執行個體負責人為您增加配置"。
如果設定檔路徑為空白或檔案不存在,系統不進行目錄隔離校正,所有使用者均可掛載主容器的任意目錄。
子容器開發人員操作指南
進入子容器管理頁面
登入 PAI 控制台,進入 DSW 頁面。
在執行個體列表中,點擊已開啟 DinD 的目標執行個體名稱,進入執行個體詳情頁。
在執行個體詳情頁中,單擊切換至子容器管理頁簽,進入管理頁面。
子容器管理頁簽僅在 DSW 主容器處於运行中狀態時展示。如果主容器未運行,該 Tab 不會顯示。
建立子容器
在子容器管理頁面,單擊新建子容器按鈕,在彈出的建立表單中完成以下配置。
基礎資訊
配置項 | 是否必填 | 說明 | 可選值/樣本 |
容器名稱 | 必填 | 為子容器指定一個便於識別的名稱。 | 例如: |
主機名稱 | 選填 | 為子容器指定自訂主機名稱。 | 例如: |
重啟策略 | 選填 | 設定容器退出後的自動重啟策略。 | 例如:不自動重啟 |
環境資訊
配置項 | 是否必填 | 說明 | 可選值/樣本 |
鏡像配置 | 必填 | 選擇子容器使用的鏡像。支援兩種方式:
| 例如: |
SSH 公開金鑰 | 必填 | 填寫本地用戶端的 SSH 公開金鑰內容,用於後續通過 SSH 登入子容器。 | 若尚未產生 SSH 金鑰對,可在本地終端執行: |
主容器掛載 | 選填 | 開啟持久化系統硬碟的執行個體內,子容器可掛載主容器任意路徑;未開啟持久化系統硬碟的執行個體內,子容器僅可掛載主容器掛載的儲存路徑和資料集。 | |
資料集掛載 | 選填 | 僅支援掛載已被主容器掛載的資料集。 | |
環境變數 | 選填 | 以索引值對形式為子容器設定自訂環境變數。 | 例如: |
啟動命令 | 選填 | 自訂容器啟動時執行的命令。 | 例如: |
進入點 | 選填 | 自訂容器的 entrypoint。 | 例如: |
資源資訊
配置項 | 是否必填 | 說明 | 可選值/樣本 |
GPU裝置掛載 | 選填 | 如果 DSW 執行個體配備了 GPU 資源,建立子容器時可以選擇需要掛載的 GPU 裝置。系統會列出當前執行個體的所有 GPU 卡(包括裝置號),支援多選。 選擇 GPU 後,對應的 GPU 裝置將被掛載到子容器中供使用。 | |
CPU上限 | 選填 | 設定該子容器可使用的最大CPU用量。若留空,則預設不設上限,可能會搶佔執行個體內的其他空閑資源。 | 例如:8核 |
記憶體上限 | 選填 | 設定該子容器可使用的最大記憶體用量。若留空,則預設不設上限,可能會搶佔執行個體內的其他空閑資源。 | 例如:48 GiB |
配置完成後,單擊确定建立子容器。您可以在子容器管理頁面,單擊子容器创建任务进度查看建立過程。
管理子容器
在子容器列表中,每個子容器的操作欄提供以下功能:
僅可操作自己建立的子容器。
啟動:將處於已停止狀態的子容器重新啟動。
停止:停止正在啟動並執行子容器。停止後容器內的進程會終止,但容器配置和掛載的儲存資料不會丟失。
重啟:重啟正在啟動並執行子容器,等效於先停止再啟動。
日誌:查看子容器的作業記錄,可用於排查問題。
SSH串連資訊:查看該子容器的 SSH 串連資訊,包括串連使用者名稱和串連命令。
刪除:刪除子容器。刪除後容器內未通過掛載方式持久化的資料將不可恢複,請謹慎操作。
查看子容器列表
進入子容器管理頁面後,可以看到當前執行個體上所有子容器的列表。列表展示以下資訊:
欄位 | 說明 |
容器名稱 | 子容器的名稱 |
使用者名稱稱 | 建立該子容器的使用者名稱 |
狀態 | 目前狀態,包括:建立中(鏡像拉取中)、已建立、運行中、已暫停、重啟中、已停止、啟動中、停止中、更新中等 |
顯存GiB | GPU 裝置號及顯存使用量 |
CPU資源 | CPU 使用率和核心數 |
記憶體GiB | 記憶體使用量情況 |
容器鏡像 | 子容器使用的鏡像 |
建立時間 | 子容器的建立時間 |
所有擁有 DSW 可讀許可權的使用者都可以查看完整的子容器列表,但只能操作(啟動、停止、刪除)自己建立的子容器。
查看建立工作清單
由於子容器建立過程可能耗時較長(如需拉取大型鏡像),系統提供了建立任務跟蹤能力。
在子容器管理頁面右上方,單擊子容器创建任务进度,可以查看所有容器建立任務的狀態和日誌。對於處於"建立中"狀態的任務,支援手動中止操作。任務記錄預設保留 3 天后自動回收。
通過SSH訪問子容器
子容器建立成功並處於運行狀態後,可以通過 SSH 方式遠程登入訪問。
操作步驟:
在子容器列表中,找到目標子容器,點擊操作欄中SSH 串連資訊,其中包括串連使用者名稱和完整串連命令。
在本地終端中執行串連命令即可登入子容器。串連命令格式為:
ssh <串連使用者名稱>@<執行個體公網地址> -p 22 -i <本地私密金鑰路徑>各參數說明:
參數 | 說明 |
串連使用者名稱 | 系統自動產生,與子容器一一綁定,顯示在"訪問方式"彈窗中 |
執行個體公網地址 | DSW 主容器的公網訪問地址 |
本地私密金鑰路徑 | 與建立子容器時填寫的 SSH 公開金鑰對應的私密金鑰檔案路徑(如 ~/.ssh/id_rsa) |
SSH 登入成功後,會直接進入對應子容器的命令列環境。所有子容器共用 DSW 主容器的 22 連接埠,通過各自不同的 SSH 金鑰和專屬串連使用者名稱實現訪問隔離。
注意事項與限制
依賴主容器狀態:子容器的所有管理能力均依賴 DSW 主容器的運行狀態。當主容器停止或異常時,子容器管理頁面不可用,子容器也無法訪問。
儲存掛載範圍:子容器的儲存掛載僅支援主容器內的目錄路徑,不能直接掛載外部儲存。
子容器數量限制:每個執行個體的子容器數量受管理員配置的上限限制,最大可配置為 16 個。
功能範圍:子容器不具備 DSW 主容器的完整開發機能力(如內建的 JupyterLab、Terminal、WebIDE 等應用),當前通過 SSH 方式訪問使用。
資料持久化:子容器內未通過儲存掛載方式持久化的資料,在子容器刪除後將不可恢複。建議將重要資料存放在掛載的目錄中。
執行個體刪除影響:刪除 DSW 執行個體時,其上所有子容器也會一併刪除,請提前做好資料備份。
常見問題
Q:為什麼在執行個體詳情頁看不到"子容器管理"Tab?
請確認:
該 DSW 執行個體在建立時已開啟启用多容器隔离 (DinD)功能;
DSW 主容器當前處於運行中狀態。主容器未運行時,子容器管理 Tab 不會展示。
Q:建立子容器時無法掛載資料目錄?
可能是執行個體管理員配置了資料目錄隔離策略,且您的阿里雲帳號未在設定檔中被分配可用目錄。請聯絡執行個體管理員在 mount_access.json 中為您添加配置。
Q:SSH 串連子容器失敗?
請依次檢查:
子容器是否處於"運行中"狀態;
使用的本地私密金鑰是否與建立子容器時填寫的公開金鑰匹配;
DSW 執行個體是否已開啟 SSH 功能;
網路是否可以訪問執行個體的公網地址和 22 連接埠。
Q:子容器建立耗時很長?
子容器建立時間主要取決於鏡像拉取速度。使用大型鏡像時首次拉取可能需要較長時間。您可以在建立工作清單中查看進度和日誌。後續使用相同鏡像建立新容器時,由於鏡像已緩衝在本地,速度會快很多。
Q:可以操作其他人建立的子容器嗎?
預設情況下,每個使用者只能操作自己建立的子容器,但可以查看所有子容器的基本資料。如果需要操作他人的子容器,需要由管理員通過 RAM 策略授予相應許可權。