Dockerを用いたHPCIログイン (Windows10編)

0. 変更履歴

0.1 主な変更内容

2024.04.05

  • ログイン手順の一部を利用者の環境に合わせて修正しました。

2024.03.29

  • Docker Desktop 4.27.2 のインストーラの動作に基づいて「2. Docker Desktop for Mac のインストール手順」を修正しました。

  • Docker イメージを gsi-openssh-20240209.tar.xz に更新しました。

2023.12.28

  • Docker Desktop 4.26.0 のインストーラの動作に基づいて「2. Docker Desktop for Windows のインストール手順」を修正しました。

  • Docker イメージを gsi-openssh-20231128.tar.xz に更新しました。

2023.07.31

  • 一部の項目で文章表現や構成を修正しました。

  • 本書のテキスト版の提供を終了しました。

2023.06.16

  • Docker Desktop 4.17.0 のインストーラの動作に基づいて「2. Docker Desktop for Windows のインストール手順」を修正しました。

  • Docker イメージを gsi-openssh-20230322.tar.xz に更新しました。

2023.04.28

  • 参照するドキュメントの URL を修正しました。

2022.07.15

  • 英語版ドキュメントを作成しました。

  • Docker Desktop 4.10.1 のインストーラの動作に基づいて「2. Docker Desktop for Windows のインストール手順」を修正しました。

  • Docker イメージを gsi-openssh-20220325.tar.xz に更新しました。

2022.01.06

  • 参照する HPCI ログインマニュアルの見出しを第22版にあわせて更新しました。

2021.07.15

  • 動作環境およびインストール手順の記述を、WSL2 バックエンドの利用を前提とした内容に変更しました。

  • 「5. X11 クライアントを実行する方法」を記載しました。

  • Docker イメージを gsi-openssh-20210607.tar.xz に更新しました。

2021.01.22

  • Docker Desktop インストーラの動作の変更に伴い、インストール手順を修正しました。

  • ドキュメント発行時点の最新の Docker Desktop で発生した docker load の不具合に関する注意を記載しました。

  • Docker イメージを gsi-openssh-20201215.tar.bz2 に更新しました。

2020.07.13

  • Docker Desktop インストーラの取得手順を修正しました (Docker ID によるサインインが不要になったため)

  • 「4. Docker イメージの更新手順」を記載しました。

  • 「5. コンテナ内の環境に関する補足」を記載しました。

  • Docker イメージを gsi-openssh-20200713.tar.xz に更新しました。

2019.10.24

  • 最初のリリース。

1. 概要

本書は、Windows 10 の利用者を対象に、Docker を利用して HPCI 環境にログインする方法について解説したマニュアルです。

Windows 10 では Docker Desktop for Windows を利用します。

注意

  • HPCI の検証環境では、 Windows11 での動作を検証していません。

1.1 用語

イメージ

コンテナの基礎となるものです。

コンテナ

イメージを実行するときの実体です。

リポジトリ

Docker イメージの集まりです。

タグ

リポジトリ内のイメージを区別するために割り当てるラベルのことです。

1.2 動作環境

注意

Docker Desktop for Windows は、バックエンドとして Hyper-V または WSL2 を利用します。本書では WSL2 バックエンドの利用を前提として説明します。

Docker Desktop for Windows をインストールするには、Windows マシンが以下の要件を満たす必要があります。

WSL2 バックエンド

  • WSL バージョン1.1.3.0 以降

  • Windows 10 64bit

    • Home or Pro 21H2 (build 19044) or higher

    • Enterprise or Education 21H2 (build 19044).

  • WSL2 機能の有効化

  • WSL2を正常に実行するためのハードウェアの前提条件

    • SLAT (Second Level Address Translation) 対応の 64bit プロセッサ.

    • 4GB システム RAM.

    • BIOS レベルのハードウェア仮想化サポート

      • BIOS 設定で有効化する必要があります。詳細は Docker Desktop のドキュメント Virtualization を参照してください。

1.3 WSL のインストール

Windows マシンに WSL、および Linux ディストリビューションとして Ubuntu をインストールします。

  • インストール手順の詳細は Microsoft のドキュメント WSL のインストール を参照してください。

  • 既に Docker Desktop for Windows を WSL2 バックエンドで利用している環境では、本手順を実施する必要はありません。

インストール手順

  1. PowerShellを管理者として実行します。

  • [クイックリンク] メニューを表示します。
    • 表示するには、 [ スタート ] ボタンを右クリック、または Windows ロゴ キー + X キー を押します。

  • [Windows PowerShell (管理者)] を選択します。

  • 「このアプリがデバイスに変更を加えることを許可しますか?」と確認を求めてきたら [ はい ] を選択して続行します。

  1. wsl コマンドでインストールを実行します.

  • PowerShell で以下を実行します。

wsl --install
  • WSL およびデフォルトの Linux ディストリビューションとして Ubuntu がインストールされます。

PS C:\WINDOWS\system32> wsl --install
インストール中: 仮想マシン プラットフォーム
仮想マシン プラットフォーム はインストールされました。
インストール中: Linux 用 Windows サブシステム
Linux 用 Windows サブシステム はインストールされました。
ダウンロード中: WSL カーネル
インストール中: WSL カーネル
WSL カーネル はインストールされました。
ダウンロード中: Ubuntu
要求された操作は正常に終了しました。変更を有効にするには、システムを再起動する必要があります。
PS C:\WINDOWS\system32>
  1. メッセージに従い、WSL のインストールを完了するため、システムを再起動します。

  2. デフォルト UNIX ユーザアカウントを設定します。

Windows にログインし直した後、Ubuntu を実行してデフォルト UNIX ユーザアカウントを作成する必要があります。

デフォルト UNIX ユーザアカウントの詳細は Microsoft のドキュメント Linux ユーザー名とパスワードを設定する を参照してください。

Ubuntu は再起動後の Windows へのログインで自動的に起動します。Ubuntu が起動しない場合は下記の操作により起動してください。

  • [ スタート ] ボタンを押して、アプリの一覧から [ Ubuntu ] を選択します。

以上で WSL および Ubuntu のインストールは完了です。

パッケージの更新とアップグレード

パッケージマネージャを使用して、パッケージを定期的に更新およびアップグレードすることをお勧めします。次のコマンドを使用します。

$ sudo apt update && sudo apt upgrade

2. Docker Desktop for Windows のインストール手順

2.1 インストーラのダウンロード

インストーラ Docker Desktop Installer.exe をダウンロードします。

注意

2020年4月8日時点で、Docker Desktop インストーラをダウンロードする際の Docker ID によるサインインは不要になっています。

  1. Web ブラウザで https://www.docker.com にアクセスします。

  2. 表示したページの [ Get Started ] ボタンを押します。

  3. 表示したページのダウンロードボタンのプルダウンメニュー ([ Download for XXXX | v ]) から、利用している機器に適したボタンを選択して、インストーラ Docker Desktop Installer.exe をダウンロードします。

  • [ Download for Windows ]

2.2 インストール手順

ここでは、WSL2 バックエンドを利用することを前提として、Docker Desktop for Windows をインストールする手順を説明します。

Docker 公式サイトの説明 Install Docker Desktop on Windows も参照してください。

インストーラの実行

注意

インストールを行う前に、「1.3 WSL のインストール 」の手順に従って WSL2 機能を有効化しておいてください。

  1. 管理者権限を持っているユーザでログオンし、インストーラ Docker Desktop Installer.exe をダブルクリックします。

  2. 「このアプリがデバイスに変更を加えることを許可しますか?」と確認を求めてきたら [ はい ] を選択して続行します。

  3. パッケージのダウンロード状況が画面に表示されます。

  4. Configuration という見出しの画面が表示されます。下記のチェックボックスがチェックされていることを確認して [ OK ] ボタンを押してください。

  • Add shortcut to desktop

  1. インストールの進行状況が画面に表示されます。

  2. 正常に終了すると Installation succeeded というメッセージとともに [ Close ] ボタンが表示されます。ボタンを押して終了してください。

docker-users グループへのユーザの追加

Docker Desktopをインストールすると、docker-usersグループが追加されます。 Dockerを使用するユーザアカウントは、docker-usersグループに属している必要があります。

管理者アカウントでインストールを実行した場合、そのアカウントは docker-usersグループに追加されます。 その他のユーザアカウントは、docker-usersグループに個別に手動で追加する必要があります。

管理者権限

docker-users グループ

インストールを実行したユーザ

あり

追加される

なし

追加されない

その他のユーザ

追加されない

ユーザアカウントを docker-usersグループに追加するには、管理者として以下の手順を実行します。

  1. コンピューターの管理 」画面を開きます。

  • [ スタート ]ボタンを右クリックして [ コンピューターの管理(G) ] を選択します。

  • コンピューターの管理 」画面が表示されます。

  1. グループの一覧を表示します。

  • 画面左側のメニューで [コンピューターの管理(ローカル)] ‣ [システムツール] ‣ [ローカルユーザーとグループ] ‣ [グループ] を選択します。

  • 画面中央の欄にグループの一覧が表示されます。

  1. docker-users のプロパティ 」を編集します。

  • グループの一覧の docker-users をダブルクリックして 「docker-users のプロパティ 」画面を開きます。

  • [追加(D)... ] ボタンを押します。

  • ユーザーの選択 」画面でユーザを追加します。

Docker Desktop の起動

  1. インストール直後の Docker Desktop は自動的に起動しないので、以下のいずれかの方法で起動します。

  • デスクトップ上に Docker Desktop ショートカットがあればダブルクリックします。

  • [ スタート ] ボタンを押して、アプリの一覧から [ Docker Desktop ] を選択します。

  1. 初回実行時は、Dockerサブスクリプションサービス契約ウィンドウが表示されます。内容を確認して、下記の操作を行い承諾します。

  • [ Accept ] ボタンを押します。

  1. Docker ダッシュボードが表示されます。初回実行時は以下の操作を行います。

  • Welcome to Docker Desktop

    以下のボタンおよびリンクが表示されます。ここでは、Docekr ID を使用せず、 "Continue without signing in" のリンクを選択することにします。

    • ボタン : [ Sign up ]

    • リンク : Already have an account? Sign in

    • リンク : Continue without signing in

  • "Welcome Survey"

    • ウィンドウ最下部の [ Skip surbey → ] を押します。

  • "Containers" ビューが表示されたら完了です。

Docker Desktop の自動起動

ログオン時に Docker Desktop を自動起動するには、以下のように設定します。

  1. Docker Desktop を起動します。

  2. メニューから [Settings] を選択します。

  • Docker ダッシュボードの歯車アイコンが Settings です。

  • タスクバーのクジラアイコンを右クリックして、メニューから [Change settings] を選択することもできます。

  1. Settings 画面の [General] に表示される以下の項目を設定します。

  • [Start Docker Desktop when you sign in your computer ] を有効にします。

  • [Open Docker Dashboard at startup ] を無効にします。

  • 変更を反映するため [Apply & Restart ] をクリックします。

Docker-WSL 統合環境の設定

Linux ディストリビューション (Ubuntu) のシェル上で docker を利用できるように設定します。

  1. Docker Desktop を起動します。

  2. メニューから [Settings] を選択します。

  • Docker ダッシュボードの歯車アイコンが Settings です。

  • タスクバーのクジラアイコンを右クリックして、メニューから [Change settings] を選択することもできます。

  1. Settings 画面の [General] に表示されるチェックボックスの内、[Use the WSL2 based engine ] をチェックして有効にします。

  • WSL2 をサポートするシステムであればデフォルトで有効になっています。

  • 無効から有効に変更した場合は [Apply & Restart ] をクリックします。

  1. Settings 画面のメニューから [Resources] ‣ [WSL Integration] の順に選択します。

  2. Linux ディストリビューションを統合環境に追加します。

  • チェックボックス [Enable integration with my default WSL distro ] をチェックして有効にします。

  • [Enable integration with additional distros: ] の下にインストール済みの Linux ディストリビューションが列挙されるので、統合環境に追加したいディストリビューションのスイッチをオンにします (オンにするとスイッチが青色になります)。

  • [Apply & Restart ] をクリックします。

以上で Docker Desktop for Windows のインストールは完了です。

2.3 アンインストール手順

Docker 公式サイトの説明 Uninstall Docker Desktop も参照してください。

Docker Desktop for Windows が不要になった場合のアンインストール手順は下記のとおりです。

注意

ローカルストレージに保存されている Docker イメージや Docker ボリュームを残しておきたい場合は、アンインストールを行う前にバックアップしてください。

  1. [スタート]ボタン ‣ [設定] (歯車形のアイコン) ‣ [アプリ] の順に選択して、[アプリと機能 ] を開きます。

  2. 一覧表示されたアプリから Docker Desktop を選択します。

  3. [アンインストール ]ボタンを押します。

docker-users グループの削除

  1. docker-users グループへのユーザの追加 」の手順に従ってグループの一覧を表示します。

  2. グループの一覧から docker-users を選択して、削除操作を行います。

3. HPCI 環境へのログイン手順

Docker Desktop for Windows を利用して HPCI 環境にログインする手順について解説します。

流れは下記のとおりです。

  1. Docker Desktop の起動

  2. ターミナルの起動

  3. Docker イメージのロード (導入時のみ)

  4. Docker コンテナの起動

  5. bash の開始

  6. ログインサーバへのログイン

  7. Docker コンテナの停止

3.1 Docker Desktop の起動

ログオン時に自動的にスタートアップするように設定していない場合は下記の操作が必要です。

  1. 下記のいずれかの方法で Docker Desktop を起動します。

  • デスクトップ上に Docker Desktop ショートカットがあればダブルクリックします。

  • [ スタート ] ボタンを押して、アプリの一覧から [ Docker Desktop ] を選択します。

  1. タスクバーのクジラアイコンが安定したら起動は完了しています。

  • タスクバーにクジラアイコンが表示されていない場合は、タスクバーの上向きの矢印をクリックして通知領域を表示して確認します。

  • クジラアイコンが動作しているときは準備中です。

  • 準備が完了すると、クジラアイコンが静止し、docker コマンドが利用できるようになります。

  • 赤いクジラアイコンが表示されている場合は何らかのエラーが発生しています。

3.2 ターミナル の起動

Linux ディストリビューションのインストール」でインストールした Linux ディストリビューション (Ubuntu) を起動します。

  • [ スタート ] ボタンを押して、アプリの一覧から [ Ubuntu ] を選択します。

3.3 Docker イメージのロード (導入時のみ)

Docker イメージを Docker ホスト上のローカルストレージ領域に保管する必要があります。

ダウンロード

  1. Docker イメージの最新版を下記 URL からダウンロードします。

    https://www.hpci.nii.ac.jp/gt6/docker/

以降の説明では、Docker イメージのファイル名を gsi-openssh-20240209.tar.xz としますので、ダウンロードしたファイル名に読み替えてください。

Docker イメージのロード

  1. docker load コマンドで Docker イメージをロードします。

username@WINDOWSPC:~$ docker load -i gsi-openssh-20240209.tar.xz
bb077eef2bb1: Loading layer  196.1MB/196.1MB
3180fe6dbb52: Loading layer  136.3MB/136.3MB
49f57b4bac10: Loading layer   7.68kB/7.68kB
4c8aa306fd05: Loading layer  4.096kB/4.096kB
cf6c1bfec768: Loading layer  22.02kB/22.02kB
5f70bf18a086: Loading layer  1.024kB/1.024kB
Loaded image: hpci/gsi-openssh:20240209
username@WINDOWSPC:~$
  1. ローカルストレージに保管されたことを確認するには、docker images コマンドを実行します。REPOSITORY が hpci/gsi-openssh で、TAG の値が Docker イメージのファイル名にある日付に一致する行が存在することを確認します。

username@WINDOWSPC:~$ docker images hpci/gsi-openssh
REPOSITORY         TAG        IMAGE ID       CREATED       SIZE
hpci/gsi-openssh   20240209   dd8e64a66353   6 weeks ago   320MB
username@WINDOWSPC:~$

3.4 Docker コンテナの起動

  1. 3.3 でロードした Docker イメージを docker run コマンドで実行します。

username@WINDOWSPC:~$ docker run -d --rm --name gsi-openssh -v ~/work:/home/hpciuser/work hpci/gsi-openssh:20240209
5694d9aa920206cf686348777ab3da2999b278acf42c014a37b5d5facb0e4afd
username@WINDOWSPC:~$

表示される長い文字列はコンテナ ID (UUID) です。このコンテナでコマンドを実行する場合や、コンテナの実行を停止する場合に、この ID (の短縮形) を使用します。

引数の意味は下記のとおりです。

-d

コンテナをバックグラウンドで実行します。

--rm

終了後にコンテナを自動的に削除します。

--name NAME

コンテナに名前を設定します。上記の例では gsi-openssh という名前を設定しています。この後に実行するコマンドの引数にコンテナを指定する際、コンテナ ID のかわりにコンテナ名 gsi-openssh を指定できるようになります。

-v LIST

ホスト OS 上のディレクトリ HOST-DIR をコンテナ上のディレクトリ CONTAINER-DIR にマウントします。LIST は HOST-DIR:CONTAINER-DIR の書式で指定します。上記の例では、Ubuntu に登録したアカウント username の work ディレクトリ (/home/username/work) をコンテナの /home/hpciuser/work ディレクトリとして参照できるようにしています。

-d オプションがないと、Ubuntu のプロンプトに戻りません。この場合は、もうひとつ Ubuntu を開いて、docker stop gsi-openssh を実行してください。コンテナが停止して、docker run を実行した方の Ubuntu のプロンプトが戻ります。その上で改めて docker run を実行してください。

—name オプションに指定する名前は、既存のコンテナと重複しない名前にします。同じ名前のコンテナが既に存在する場合は、別の名前を指定するか、既存のコンテナを (不要ならば) 削除してください。

--name オプションによる名前の指定を省略した場合は、コンテナ名はランダムな文字列が設定されます。設定された名前は後述する docker ps コマンドで確認できます。

-v オプションに指定する CONTAINER-DIR にはコンテナ上のユーザがアクセス可能なディレクトリを指定する必要があります。gsi-openssh-20240209.tar.xz の Docker イメージでは、コンテナ上のユーザは hpciuser で固定となっているので、 /home/hpciuser ディレクトリ下の名前を指定してください。

  1. 正常に起動できているかどうか、docker ps コマンドで確認します。下記の欄に一致する情報が存在することを確認します。

CONTAINER ID

docker run 実行時に表示されたコンテナ ID (の始めから12文字)

IMAGE

引数に指定した Docker リポジトリ名:タグ名

NAMES

--name オプションで指定した名前

username@WINDOWSPC:~$ docker ps
CONTAINER ID   IMAGE                       COMMAND                  CREATED         STATUS         PORTS     NAMES
5694d9aa9202   hpci/gsi-openssh:20240209   "sudo /usr/sbin/cron…"   2 minutes ago   Up 2 minutes             gsi-openssh
username@WINDOWSPC:~$

docker ps の出力に、上記に該当する情報が表示されていなければ、コンテナの起動に失敗した可能性があります。

表示する情報の種類や順序を --format で変更できます。NAMES, CONTAINER ID, IMAGE だけを表示するには下記のように指定します。

username@WINDOWSPC:~$ docker ps --format "{{.Names}} {{.ID}} {{.Image}}"
gsi-openssh 5694d9aa9202 hpci/gsi-openssh:20240209
username@WINDOWSPC:~$

3.5 bash の実行

bash の実行環境

bash の実行環境の設定は以下のとおりです。gsi-openssh-20240209.tar.xz の Docker イメージではすべて固定値です。

  • ユーザ名 (ユーザID)

    hpciuser (2000)

  • グループ名 (グループID)

    hpciuser (2000)

  • ホームディレクトリ

    /home/hpciuser

  • タイムゾーン (環境変数 TZ の設定値)

    JST-9

bash の実行

  1. docker exec コマンドを使用して、3.4 で起動したコンテナで /bin/bash を実行します。ここでは gsi-openssh です。

username@WINDOWSPC:~$ docker exec -i -t gsi-openssh /bin/bash
[hpciuser@XXXXXXXXXXXX ~]$

引数 -i および -t は、bash をインタラクティブに実行するために必要な引数です。-it のように連結して指定することもできます。

-i

標準入力 (STDIN) をオープンしたままにします。

-t

コンテナのプロセスに擬似ターミナル (pseudo TTY) を割り当てます。

bash プロセスの開始により、下記の表示となります。

  • プロンプトは PowerShell のプロンプトではなく、bash のプロンプトとなります。

  • XXXXXXXXXXXX の部分はコンテナ ID の短縮形が表示されます。

3.6 ログインサーバへのログイン

本節ではログイン手順の概要を説明します。詳細は HPCI ログインマニュアル を参照してください。

代理証明書の発行

最初に、Web ブラウザで HPCI 証明書発行システム にアクセスして代理証明書を発行し、代理証明書リポジトリに格納する必要があります。

注意

  • 代理証明書の有効期限は最大168時間です。

  • 有効期限が切れたら、その都度発行 (格納) してください。

  • 発行 (格納) 手順は以下のドキュメントを参照してください。

代理証明書のダウンロード

コンテナ に代理証明書をダウンロードします。

  1. myproxy-logon コマンドで、代理証明書をダウンロードします。

[hpciuser@XXXXXXXXXXXX ~]$ myproxy-logon -s portal.hpci.nii.ac.jp -l [HPCI-ID]
Enter MyProxy pass phrase: ********
A credential has been received for user <HPCI-ID> in /tmp/x509up_up2000.
[hpciuser@XXXXXXXXXXXX ~]$
  1. grid-proxy-info コマンドで、取得した代理証明書の情報を確認します。

[hpciuser@XXXXXXXXXXXX ~]$ grid-proxy-info
subject  : /C=JP/O=NII/OU=HPCI/CN=user/CN=proxy/CN=proxy/CN=proxy/CN=proxy
issuer   : /C=JP/O=NII/OU=HPCI/CN=user/CN=proxy/CN=proxy/CN=proxy
identity : /C=JP/O=NII/OU=HPCI/CN=user
type     : RFC 3820 compliant impersonation proxy
strength : 2048 bits
path     : /tmp/x509up_u2000
timeleft : 12:01:15
[hpciuser@XXXXXXXXXXXX ~]$

ログインサーバへのログイン

  1. ログインサーバにログインします。以下に東京工業大学のログインサーバ login.t3.gsic.titech.ac.jp にログインする例を示します。

[hpciuser@XXXXXXXXXXXX ~]$ gsissh -p 2222 login.t3.gsic.titech.ac.jp
Last login: Tue Jan 24 11:09:13 2023 from xxx.xxx.xxx.xxx
--------------------------------------------------------------------
Last modified: 2023-04-06 17:00:00 JST

 ** Do not run heavy programs like ISVs on login nodes login[01]. **

    (The current TSUBAME 3.0 operational status)
    https://www.t3.gsic.titech.ac.jp/      Twitter:@Titech_TSUBAME
--------------------------------------------------------------------
<HPCI-ID>@login1:~>
  1. ログインサーバ から exit すると、 コンテナの bash に戻ります。

<HPCI-ID>@login1:~> exit
logout
Connection to login.t3.gsic.titech.ac.jp closed.
[hpciuser@XXXXXXXXXXXX ~]$

3.7 bash の終了

  1. コンテナから Ubuntu に戻るには、bash 上で exit を実行します。

[hpciuser@XXXXXXXXXXXX ~]$ exit
exit
username@WINDOWSPC:~$ exit

exit により bash プロセスは終了しますが、コンテナは停止していません。3.5 に従い bash を実行することで再度 gsissh コマンドを使用できます。代理証明書が有効期間内であれば、代理証明書をダウンロードしなおす必要はありません。

3.8 Docker コンテナの停止

  1. コンテナを停止するには、docker stop コマンドを実行します。停止するコンテナ名は 3.4 で起動したコンテナ名を指定します。ここでは gsi-openssh です。

username@WINDOWSPC:~$ docker stop gsi-openssh
gsi-openssh
username@WINDOWSPC:~$

注意

コンテナを停止すると、そのコンテナは削除されます。コンテナ上に作成、保存したファイルも削除されます。コンテナを停止する前に、必要なファイルを /home/hpciuser/work/ ディレクトリ (docker run の -v オプションでマウントしたディレクトリ) に移動してください。

3.9 ボリュームへのファイルの保存について

注意

WSL2 バックエンドを利用する場合、Windows 上のフォルダ (/mnt/c/Users/username) ではなく Linux ディストリビューション上のディレクトリ (/home/username) をバインドマウントする方が性能が向上します。ここでは Ubuntu 上で docker を実行する場合の動作について記述しています。

docker run コマンドの -v LIST 引数で、Ubuntu 上のディレクトリをバインドマウントすると、コンテナと Ubuntu の間でファイルを共有できます。

Ubuntu 上のディレクトリをバインドマウントしたコンテナ上のディレクトリでは、ファイルの所有者、グループ、パーミッションは下記になります。

所有者

hpciuser (2000)

グループ

hpciuser (2000)

パーミッション (ファイル)

0644

パーミッション (ディレクトリ)

0755

Ubuntu 上のディレクトリでも上記の値になります。ただし Ubuntu 環境に hpciuser というユーザを登録していない場合、ls コマンドでは uid, gid が数字で表示されます。

4. Docker イメージの更新手順

本章では、旧バージョンの Docker イメージを新バージョンの Docker イメージに更新する手順を説明します。

説明では以下の名前を使用します。実際に使用するバージョンで読み替えてください。

Docker イメージ名

新バージョン

hpci/gsi-openssh:20240209

旧バージョン

hpci/gsi-openssh:20231128

4.1 異なるバージョンの Docker イメージの保管について

Docker イメージはバージョンをタグで識別するので、hpci/gsi-openssh の複数のバージョンをローカルストレージに保管することができます。旧バージョン (hpci/gsi-openssh:20231128) を既にロード済みの環境に新バージョン (hpci/gsi-openssh:20240209) をロードして、両方のバージョンを保管しておくことが可能です。

username@WINDOWSPC:~$ docker image ls
REPOSITORY         TAG        IMAGE ID       CREATED         SIZE
hpci/gsi-openssh   20240209   dd8e64a66353   6 weeks ago    320MB
hpci/gsi-openssh   20231128   12a54c4e3ec3   4 months ago   466MB
username@WINDOWSPC:~$

言い換えると、新バージョンのイメージをロードしても、ロード済みの旧バージョンは自動的には削除されません。旧バージョンのイメージが不要な場合は、明示的に削除する必要があります。

4.2 新バージョンの Docker イメージの導入

新バージョンの Docker イメージを導入するには、最初の導入時と同様に 3.3 Docker イメージのロード (導入時のみ) の手順に従って実行します。

4.3 旧バージョンの Docker イメージの削除

旧バージョンの Docker イメージが不要な場合、本節の手順にしたがってローカルストレージから削除します。

Docker コンテナの停止

削除する Docker イメージでコンテナを実行中の場合、まずコンテナを停止する必要があります。

  1. 実行中のコンテナを確認するには docker ps コマンドを実行します。

username@WINDOWSPC:~$ docker ps -a
CONTAINER ID   IMAGE                       COMMAND                  CREATED         STATUS         PORTS     NAMES
76b44f435a6e   hpci/gsi-openssh:20231128   "sudo /usr/sbin/cron…"   2 minutes ago   Up 2 minutes             gsi-openssh
username@WINDOWSPC:~$

旧バージョンの Docker イメージ (hpci/gsi-openssh:20231128) から生成したコンテナ gsi-openssh が実行中であることが確認できます。

  1. 実行中のコンテナを停止するには docker stop コマンドを実行します。

    gsi-openssh という名前のコンテナを停止する場合は以下のように実行します。

username@WINDOWSPC:~$ docker stop gsi-openssh
gsi-openssh
username@WINDOWSPC:~$

docker run コマンド実行時の引数に --rm を指定している場合は、コンテナの停止と同時にコンテナが削除されます。

Docker コンテナの削除

docker run コマンド実行時の引数に --rm を指定していない場合は、docker stop コマンドでコンテナを停止しただけではコンテナは削除されません。以下の手順でコンテナを削除してください。

  1. 停止中を含む全てのコンテナを確認するには docker ps -a コマンドを実行します。

username@WINDOWSPC:~$ docker ps -a
CONTAINER ID   IMAGE                       COMMAND                  CREATED         STATUS                     PORTS     NAMES
76b44f435a6e   hpci/gsi-openssh:20231128   "sudo /usr/sbin/cron…"   2 minutes ago   Exited (0) 2 minutes ago             gsi-openssh
username@WINDOWSPC:~$

旧バージョンの Docker イメージ (hpci/gsi-openssh:20231128) から生成したコンテナ gsi-openssh が Exited の状態で存在していることが確認できます。

  1. Docker コンテナを削除するには docker rm コマンドを実行します。

    gsi-openssh という名前のコンテナを削除する場合は以下のように実行します。

username@WINDOWSPC:~$ docker rm gsi-openssh
gsi-openssh
username@WINDOWSPC:~$

Docker イメージの削除

  1. Docker イメージを削除するには docker rmi コマンドを実行します。

    hpci/gsi-openssh:20231128 という名前のイメージを削除する場合は以下のように実行します。

username@WINDOWSPC:~$ docker rmi hpci/gsi-openssh:20231128
Untagged: hpci/gsi-openssh:20231128
Deleted: sha256:12a54c4e3ec3820032519ed6c3a672827346bbbffa2eb31de36a7f2789cd0277
Deleted: sha256:b61a533269a6cd65d1a92c43e4301d973e479085b314c946e383f64daf4970b2
Deleted: sha256:a3cc829c75127774c8edf8123d92c558ff08f05429746bfba3cd194d441b2c4b
Deleted: sha256:6c64f8888ec73467a7490dcb6e213fb80e62929dfaeca223a53d9c56bf9bd218
Deleted: sha256:0792f28b26a53ed79b0c133e2ab528fe53e73b988cf2e4eabb06dc16ec387e3b
Deleted: sha256:29e94a958940fc04064eedabe7d0a06cf1837e733e2544572c138dce321c0265
Deleted: sha256:51af9e44b4eaeac885d65d3f63d6b1a81bacdc0846f917ab8ad50bfe0848fe55
username@WINDOWSPC:~$

注意

イメージから生成したコンテナが存在する状態で削除を実行すると、以下のようにエラーになります。

username@WINDOWSPC:~$ docker rmi hpci/gsi-openssh:20231128
Error response from daemon: conflict: unable to remove repository reference "hpci/gsi-openssh:20231128" (must force) - container 76b44f435a6e is using its referenced image ad9a3118feda
username@WINDOWSPC:~$

5. X11 クライアントを実行する方法

gsissh で接続したリモートホスト上の X11 クライアントを実行して、Windows 上に表示するための手順について解説します。

Windows10 で実行する X サーバとして、VcXsrv を使用します。

5.1 VcXsrv の導入手順

5.1.1 ダウンロード

VcXsrv の Web サイトから VcXsrv のインストーラをダウンロードします。

5.1.2 インストール

  1. ダウンロードした VcXsrv の インストーラを実行します.

  2. 「ユーザーアカウント制御」というタイトルの同意プロンプトが表示されます。

  • 「この不明な発行元からのアプリがデバイスに変更を加えることを許可しますか?」

  • [ はい ] を選択して続行します。

  1. VcXsrv Setup: Installation Options 画面

  • 必要に応じて設定を変更してください。通常は初期設定のままで問題ありません。

  • [ Next> ] ボタンを押します。

  1. VcXsrv Setup: Installation Folder 画面

  • 必要に応じて設定を変更してください。通常は初期設定のままで問題ありません。

  • [ Install ] ボタンを押します。

  1. VcXsrv Setup: Installing

  • 進捗状況が表示されます。

  • 完了すると、タイトルバーが VcXsrv Setup: Completed に変化します。

  • [ Close ] ボタンを押して終了します。

5.2 X クライアントの実行手順

以下に、Docker コンテナ上の gsissh で接続したリモートホストで、X クライアント xeyes を実行する手順を示します。

実例として、理化学研究所 計算科学研究センター (R-CCS) の大容量メモリ・GPGPU搭載クライアント環境のログインサーバ das.r-ccs.riken.jp にログインします。

VcXsrv を起動した状態で、ターミナルで以下の手順を実行します。

  1. Docker イメージを docker run コマンドで実行します。

$ docker run -d --rm --name gsi-openssh -v ~/work:/home/hpciuser/work -e DISPLAY=host.docker.internal:0 hpci/gsi-openssh:20231128

コマンドの引数に -e DISPLAY=host.docker.internal:0 を追加してください

-e LIST

コンテナ内で起動するプロセスで使用する環境変数を設定します。上記の例では 環境変数 DISPLAY に host.docker.internal:0 という値を設定しています。

  1. docker exec でコンテナに接続します

$ docker exec -it gsi-openssh /bin/bash
  1. myproxy-logon コマンドで、代理証明書をダウンロードします。

[hpciuser@XXXXXXXXXXXX ~]$ myproxy-logon -s portal.hpci.nii.ac.jp -l [HPCI-ID]
Enter MyProxy pass phrase: ********
A credential has been received for user <HPCI-ID> in /tmp/x509up_up2000.
[hpciuser@XXXXXXXXXXXX ~]$
  1. ログインサーバにログインします。以下に、理化学研究所 計算科学研究センター (R-CCS) の大容量メモリ・GPGPU搭載クライアント環境のログインサーバ das.r-ccs.riken.jp にログインする例を示します。

[hpciuser@XXXXXXXXXXXX ~]$ gsissh -Y -p 2222 das.r-ccs.riken.jp
Warning: No xauth data; using fake authentication data for X11 forwarding.
*****************************************************************
Gfarm clients with large memory and GPGPU is ready.

  R-CCS provides 4 compute nodes equipped with large-capacity memory (1,024 GB) and GPGPU (NVIDIA Tesla P100) as  HPCI shared storage clients.
  You can use exclusively one of these 4 compute nodes by using pbs pro job scheduler on the login server(das.r-ccs.riken.jp).
  The followings can be used on each compute node.

   Singularity, Container execution environment
   ParaView, Visualization environment
   HPCI shared storage from Singularity container
   Intel compiler and PGI compiler

    For details, please visit : https://www.hpci-office.jp/info/pages/viewpage.action?pageId=133667887
*****************************************************************
Last login: Wed Jun 30 15:31:18 2021 from 202.221.181.100
[username@das ~]$

X Forwarding を有効にするため、引数 -Y を指定します。

-Y

信頼できる X11 転送を有効にします。

  1. xeyes を実行します

[username@das ~]$ xeyes

6. コンテナ内の環境に関する補足

6.1 sudo

sudo(8) は NOPASSWD で実行可能です。詳細は以下のファイルをご覧ください。

  • /etc/sudoers.d/hpciuser