Data Science Workshop (DSW) のサブコンテナは Docker in Docker (DinD) 技術を利用しており、単一の DSW インスタンス内で複数のサブコンテナを作成・管理できます。コンソールのビジュアルインターフェイスを通じて、環境を分離し、リソースを管理し、サブコンテナの作成、開始、停止、削除、および SSH 経由でのリモートアクセスを行うことができます。
ユースケース
同じ DSW インスタンス内で異なる開発環境を分離し、異なるイメージ間でトレーニング結果を比較・検証します。
GPU リソースが不足している場合、異なるイメージでサブコンテナを作成することでランタイム環境を切り替え、インスタンスの再構築や再キューイングを回避します。
サブコンテナを利用することで、複数のユーザーが単一の DSW インスタンスを共有しつつ、ユーザー間の環境とリソースの分離を維持できます。
前提条件
現在、サブコンテナ機能は、Lingjun リソースグループまたはバージョン 1.0 の汎用リソースグループから作成された DSW インスタンスでのみサポートされています。
インスタンス管理者 (インスタンスの作成者または所有者) は、DSW インスタンスを作成および管理する権限が必要です。
DSW インスタンスは、作成時に Enable Multi-Container Isolation (DinD) 機能が有効になっている必要があります。
SSH 経由でサブコンテナにアクセスする必要がある場合は、DSW インスタンスで SSH 機能も有効になっている必要があります。
役割と権限
サブコンテナ管理には、2 種類の役割が関わります:
インスタンス管理者 (所有者): DSW インスタンスの作成者です。この役割は、DinD の有効化、アクセス制限の設定、サブコンテナの最大数の設定、データディレクトリ分離ルールの定義など、インスタンスレベルの設定を管理します。
サブコンテナ開発者: 対応するワークスペースの役割 (アルゴリズム開発など) または Resource Access Management (RAM) の権限を持つユーザーです。この役割は、サブコンテナのリストの表示、自身のサブコンテナの作成、および SSH 経経由でのログインが可能です。開発者は自身が作成したサブコンテナのみを開始、停止、または削除できますが、すべてのサブコンテナに関する情報を表示できます。
権限管理には、2つの方法があります:
ワークスペースの役割ベースの制御: インスタンス管理者は、アルゴリズム開発などの特定の役割がメインコンテナにアクセスすることを制限できます。制限された役割を持つユーザーは、サブコンテナでのみ開発作業を行えます。この方法は理解しやすく、ほとんどのシナリオに適しています。
RAM ポリシーベースの制御: RAM ポリシーを設定することで、特定のインスタンスの特定のサブコンテナに至るまで、より詳細な権限管理を実現できます。この方法は、より厳しいセキュリティ要件を持つ企業顧客に適しています。
管理者向けの操作
マルチコンテナ分離の有効化
Platform for AI (PAI) コンソールにログインし、DSW ページに移動して、Create Instance をクリックします。
インスタンス設定で、Enable Multi-Container Isolation (DinD) スイッチを見つけて有効にします。
このオプションを有効にすると、以下の設定が表示されます:
[Restrict roles that can access the main container]: ドロップダウンリストから、制限するワークスペースの役割を選択します。制限された役割を持つユーザーは、DSW のメインコンテナを直接開いたり操作したりすることはできず、SSH 経由でサブコンテナにログインして開発作業を行うことしかできません。
たとえば、Algorithm Development を選択した場合、この役割を持つユーザーはメインコンテナにアクセスできません。ただし、インスタンス詳細ページの Sub-container Management タブで、引き続き自身のサブコンテナを作成して使用できます。
ロールを選択しない場合、すべての承認済みユーザーは通常どおりメインコンテナにアクセスでき、これは既存の動作と一致します。
[Maximum Number of Sub-containers]: インスタンスで作成できるサブコンテナの最大数を設定します。1 から 16 までの整数を入力できます。デフォルト値は 10 です。
[Data Catalog Fencing Configuration]: メインコンテナ内のデータディレクトリ分離設定ファイルのパスを指定します。デフォルトのパスは
/etc/docker/dockerboard/mount_access.jsonです。このファイルは、ユーザーがサブコンテナを作成する際にマウントできるデータディレクトリを制御します。Configuration Template Download をクリックして、テンプレートファイルをダウンロードできます。設定手順については、「データディレクトリ分離の設定」をご参照ください。
残りのインスタンス設定を完了し、[Create Instance] をクリックします。
データディレクトリ分離の設定
データディレクトリ分離は、開発者がサブコンテナを作成する際にマウントできるデータディレクトリを制御します。これにより、開発者が承認された範囲を超えてストレージデータにアクセスするのを防ぎます。
手順
インスタンスの作成または編集ページで、Data Catalog Fencing Configuration の下にある Configuration Template Download リンクをクリックして、JSON テンプレートファイルを取得します。
テンプレートの形式に従って、各 Alibaba Cloud サブアカウント UID を、ユーザーがアクセスを許可されている DSW メインコンテナ内のディレクトリにマッピングします。
編集した
mount_access.jsonファイルを、DSW メインコンテナ内の設定パスで指定された場所に配置します。デフォルトの場所は/etc/docker/dockerboard/mount_access.jsonです。
設定ファイルの形式
設定ファイルは JSON 形式です。Alibaba Cloud サブアカウント UID をキーとして使用します。各ユーザーについて、Allow (許可されるマウントディレクトリのリスト) と Deny (拒否されるマウントディレクトリのリスト) を設定できます。以下に例を示します:
{
"123124432xxx": {
"Allow": [
"/mnt/workspace",
"/mnt/data1"
],
"Deny": [
"/mnt/data2"
]
},
"224321234xxx": {
"Allow": [
"*"
]
}
}次の表に、フィールドの説明を示します。
フィールド | 説明 |
キー (例: | Alibaba Cloud サブアカウントの UID。 |
Allow | ユーザーがマウントを許可されているメインコンテナのディレクトリのリスト。これを |
Deny | ユーザーがマウントを禁止されているメインコンテナのディレクトリのリスト。Deny は Allow よりも優先されます。 あるディレクトリが Allow リストと Deny リストの両方に存在する場合、ユーザーはそのディレクトリをマウントできません。このフィールドは省略可能です。 |
設定適用ルール
設定ファイルが存在し、有効である場合、システムはサブコンテナ作成時に現在のユーザーが選択したディレクトリをマウントする権限があるか確認します。
設定ファイルに現在のユーザーのレコードが見つからない場合、ユーザーは新しいサブコンテナを作成する際にどのデータディレクトリもマウントできません。ページには、「Your account does not have any available DSW paths. If you need to mount a path, contact the instance administrator to add a configuration for you.」というメッセージが表示されます。
設定ファイルのパスが空であるか、ファイルが存在しない場合、システムはディレクトリ分離チェックを実行せず、すべてのユーザーがメインコンテナから任意のディレクトリをマウントできます。
開発者向けの操作
管理ページへのアクセス
PAI コンソールにログインし、DSW ページに移動します。
インスタンスリストで、DinD が有効になっているターゲットインスタンスの名前をクリックして、インスタンス詳細ページに移動します。
インスタンス詳細ページで、Sub-container Management タブをクリックします。
Running タブは、DSW のメインコンテナが [Running] 状態のときにのみ表示されます。
サブコンテナの作成
[Sub-container Management] ページで Create Sub-container をクリックし、作成フォームで以下のパラメーターを入力します。
基本情報
パラメーター | 必須 | 説明 | 例 |
コンテナ名 | はい | サブコンテナに認識しやすい名前を指定します。 |
|
ホスト名 | いいえ | サブコンテナにカスタムホスト名を指定します。 |
|
再起動ポリシー | いいえ | コンテナが終了したときに適用される自動再起動ポリシーを設定します。 | 自動的に再起動しない |
環境情報
パラメーター | 必須 | 説明 | 例 |
イメージ設定 | はい | サブコンテナのイメージを選択します。2 つの方法が利用できます:
|
|
SSH 公開キー | はい | ローカルクライアントの SSH 公開キーを入力します。このキーを使用して、SSH 経由でサブコンテナにログインします。 | SSH キーペアを生成していない場合は、ローカルターミナルで |
メインコンテナのマウント | いいえ | 永続的なシステムディスクを持つインスタンスの場合、サブコンテナはメインコンテナから任意のパスをマウントできます。永続的なシステムディスクを持たないインスタンスの場合、サブコンテナはメインコンテナがすでにマウントしているストレージパスとデータセットのみをマウントできます。 | |
データセットのマウント | いいえ | メインコンテナがすでにマウントしているデータセットのみをマウントできます。 | |
環境変数 | いいえ | サブコンテナのカスタム環境変数をキーと値の形式で設定します。 |
|
起動コマンド | いいえ | コンテナ起動時に実行するカスタムコマンドを指定します。 |
|
エントリーポイント | いいえ | コンテナのカスタムエントリーポイントを指定します。 |
|
リソース情報
パラメーター | 必須 | 説明 | 例 |
GPU デバイスのマウント | いいえ | DSW インスタンスに GPU リソースが搭載されている場合、サブコンテナ作成時にマウントする GPU デバイスを選択できます。システムは利用可能なすべての GPU カードとそのデバイス番号をリスト表示します。複数のデバイスを選択できます。 選択された GPU デバイスは、サブコンテナにマウントされて使用されます。 | |
CPU 制限 | いいえ | サブコンテナの最大 CPU 使用量を設定します。空白のままにすると制限は設定されず、サブコンテナはインスタンス内の他のアイドルリソースを消費する可能性があります。 | 8 コア |
メモリ制限 | いいえ | サブコンテナの最大メモリ使用量を設定します。空白のままにすると制限は設定されず、サブコンテナはインスタンス内の他のアイドルリソースを消費する可能性があります。 | 48 GiB |
設定を完了したら、Confirm をクリックしてサブコンテナを作成します。[Sub-container Management] ページの Child Container Creation Progress をクリックすると、作成の進行状況を表示できます。
サブコンテナの管理
サブコンテナリストでは、各サブコンテナの [操作] 列で以下の操作が可能です:
自分が作成したサブコンテナのみを管理できます。
開始: 停止状態のサブコンテナを開始します。
停止: 実行中のサブコンテナを停止します。コンテナ内のプロセスは終了しますが、コンテナの設定とマウントされたストレージデータは失われません。
再起動: 実行中のサブコンテナを再起動します。これは、停止してから開始するのと同じです。
ログ: トラブルシューティングのためにサブコンテナの実行ログを表示します。
SSH 接続情報: 接続ユーザー名やコマンドなど、サブコンテナの SSH 接続情報を表示します。
削除: サブコンテナを削除します。ストレージマウントを通じて永続化されていないデータは完全に失われます。この操作は慎重に実行してください。
サブコンテナのリスト
[Sub-container Management] ページに移動すると、現在のインスタンス上のすべてのサブコンテナのリストが表示されます。リストには以下の情報が表示されます:
フィールド | 説明 |
コンテナ名 | サブコンテナの名前。 |
ユーザー名 | サブコンテナを作成したユーザーのユーザー名。 |
ステータス | 現在のステータス。Creating (イメージのプル中)、Created、Running、Paused、Restarting、Stopped、Starting、Stopping、Updating が含まれます。 |
ビデオメモリ (GiB) | GPU デバイス番号とビデオメモリ使用量。 |
CPU リソース | CPU 使用率とコア数。 |
メモリ (GiB) | メモリ使用量。 |
コンテナイメージ | サブコンテナが使用するイメージ。 |
作成時刻 | サブコンテナが作成された時刻。 |
DSW インスタンスに対する読み取り権限を持つすべてのユーザーは、サブコンテナの完全なリストを表示できますが、管理 (開始、停止、または削除) できるのは自身が作成したサブコンテナのみです。
作成タスクリスト
サブコンテナの作成は、特に大きなイメージをプルする場合に時間がかかることがあるため、システムは作成タスクを追跡する方法を提供しています。
[Sub-container Management] ページの右上隅にある Child Container Creation Progress をクリックすると、すべてのコンテナ作成タスクのステータスとログを表示できます。「Creating」状態のタスクは手動で停止できます。タスクレコードは 3 日後に自動的に削除されます。
SSH 経由での接続
サブコンテナが作成され、実行された後、SSH 経由でリモート接続できます。
手順
サブコンテナリストで、ターゲットのサブコンテナを見つけ、[操作] 列の [SSH Connection Information] をクリックします。ダイアログが開き、接続ユーザー名と完全な接続コマンドが表示されます。
ローカルターミナルで接続コマンドを実行して、サブコンテナにログインします。コマンドの形式は次のとおりです:
ssh <connection_username>@<instance_public_address> -p 22 -i <local_private_key_path>パラメータは次の表のとおりです。
パラメーター | 説明 |
接続ユーザー名 | ユーザー名は自動的に生成され、特定のサブコンテナにバインドされます。「アクセス方法」ポップアップウィンドウに表示されます。 |
インスタンスのパブリックアドレス | DSW メインコンテナのパブリック IP アドレス。 |
ローカル秘密キーのパス | サブコンテナ作成時に指定した SSH 公開キーに対応するローカル秘密キーファイルへのパス (例:~/.ssh/id_rsa)。 |
SSH ログインが成功すると、サブコンテナのコマンドライン環境に直接接続されます。すべてのサブコンテナは DSW メインコンテナのポート 22 を共有しますが、アクセスは一意の SSH キーと専用の接続ユーザー名によって分離されます。
制限事項と考慮事項
メインコンテナの状態への依存: すべてのサブコンテナ管理機能は、DSW メインコンテナの実行状態に依存します。メインコンテナが停止したりエラーが発生したりすると、[Sub-container Management] ページは利用できなくなり、サブコンテナにアクセスできなくなります。
ストレージマウントの範囲: サブコンテナは、メインコンテナ内のディレクトリのみをマウントできます。外部ストレージを直接マウントすることはできません。
サブコンテナの制限: インスタンスあたりのサブコンテナの数は、管理者によって設定された最大値 (最大 16) によって制限されます。
機能範囲: サブコンテナには、JupyterLab、Terminal、WebIDE などの組み込みアプリケーションといった、DSW メインコンテナの完全な開発機能はありません。現在は SSH 経由でアクセスします。
データの永続性: サブコンテナが削除されると、マウントされたディレクトリに保存されていないデータは完全に失われます。重要なデータはマウントされたディレクトリに保存することを推奨します。
インスタンス削除の影響: DSW インスタンスが削除されると、そのすべてのサブコンテナも削除されます。インスタンスを削除する前に、データをバックアップしてください。
よくある質問
Q:「[Sub-container Management]」タブが表示されないのはなぜですか?
A: 以下をご確認ください:
DSW インスタンスが Enable Multi-Container Isolation (DinD) 機能を有効にして作成されていること。
DSW メインコンテナが現在 [Running] 状態であること。[Sub-container Management] タブは、メインコンテナが実行中でない場合は表示されません。
Q:データディレクトリをマウントできないのはなぜですか?
A: インスタンス管理者がデータディレクトリ分離ポリシーを設定しており、お客様の Alibaba Cloud アカウントに設定ファイル内で利用可能なディレクトリが割り当てられていない可能性があります。インスタンス管理者に連絡して、mount_access.json ファイルにお客様のアカウントの設定を追加してもらってください。
Q:SSH 接続に失敗するのはなぜですか?
A: 以下の順でご確認ください:
サブコンテナが [Running] 状態であることを確認してください。
使用しているローカル秘密キーが、サブコンテナ作成時に指定した公開キーと一致していることを確認してください。
DSW インスタンスで SSH 機能が有効になっていることを確認してください。
ネットワークが、インスタンスのパブリック IP アドレスへのポート 22 でのアクセスを許可していることを確認してください。
Q:サブコンテナの作成が遅いのはなぜですか?
A: サブコンテナの作成時間は、主にイメージのプル速度に依存します。大きなイメージを初めてプルする場合、時間がかかることがあります。作成タスクリストで進行状況とログを確認できます。後で同じイメージを使用して新しいコンテナを作成すると、イメージがローカルにキャッシュされているため、プロセスははるかに高速になります。
Q:他のユーザーのサブコンテナを管理できますか?
A: デフォルトでは、自分が作成したサブコンテナのみを管理できますが、すべてのサブコンテナの基本情報は表示できます。他のユーザーが作成したサブコンテナを管理するには、管理者に RAM ポリシーを介して必要な権限を付与してもらう必要があります。