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

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 に更新しました。

  • Apple シリコンを登載した Mac 用の Docker イメージを新たに作成しました。

2023.12.28

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

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

2023.07.31

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

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

2023.06.16

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

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

2023.04.28

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

2022.12.19

  • Docker Desktop for Mac with Apple silicon 4.14.1 に基づいて記述を修正しました。

2022.07.15

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

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

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

2022.01.06

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

2021.07.15

  • 「1.2 動作環境」に Apple silicon の Mac に関する記述を追加しました。

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

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

2021.01.22

  • 「1.2 動作環境」の記述で、 macOS のバージョンを変更しました。

  • 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. 概要

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

macOS 用には、Mac に搭載されているチップの種類に対応して、2種類の Docker Desktop があります。

  • Mac with Intel chip

  • Mac with Apple silicon

本書では、両者を区別して記述する必要がある場合、Docker Desktop のドキュメント Install Docker Desktop on Mac の表記にならって「 Intel チップを登載した Mac」「 Apple シリコンを登載した Mac」という語を使用します。

1.1 用語

イメージ

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

コンテナ

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

リポジトリ

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

タグ

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

1.2 動作環境

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

  • 前提条件についての最新の情報は Docker Desktop のドキュメント System requirements を参照してください。

Intel チップを登載した Mac

  • macOS 12 以降 (Monterey, Ventura, Sonoma)

    • 最新のメジャーバージョンから2つ前のバージョンまで

    • 最新の macOS へのアップグレードを推奨

    • HPCI の検証環境では、Monterey (version 12.7.1) で動作検証を行いました。

  • 4GB 以上の RAM.

  • バージョン 4.3.30 より前の VirtualBox がインストールされていないこと

Apple シリコンを登載した Mac

  • Apple シリコンを搭載した Mac であること

    • HPCI の検証環境では、Monterey で動作検証を行いました。

  • Rosetta 2 について

    • HPCI の検証環境では、Rosetta 2 をインストールした状態での動作を検証していません。

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

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

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

注意

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

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

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

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

  • [ Download for Mac - Intel Chip ]

  • [ Download for Mac - Apple Chip ]

2.2 インストール手順

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

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

  2. "Docker" というタイトルのウィンドウが表示されます。表示されている Dokcer アイコンをdrag して、同じウィンドウにある Applications フォルダに drop します。

  3. コピーの進行状況が表示されます。

  4. 進行状況の表示が終了したら、Docker ウィンドウの Applications アイコンをダブルクリックして Applications フォルダを開きます。

  5. Applications フォルダ内の Docker アイコンをダブルクリックします。

  6. "Docker" の検証状況が表示されます。

  7. 「"Docker" はインターネットからダウンロードされたアプリケーションです。開いてもよろしいですか?」という確認画面が表示されるので、[開く ] ボタンを押します。

  8. ステータスバーに Docker アイコンが表示されます。

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

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

  1. Finish setting up Docker Desktop という見出しのウィンドウが表示されます。

  • 画面の記述に従っていずれかを選択します。

    • Use recommended settings (requires password)

    • Use advanced settings

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

  1. 特権アクセスの許可を求めるダイアログボックスが表示されます。

「許可するにはパスワードを入力してください。」という指示に従い、パスワード欄にパスワードを入力し、[ OK ] ボタンを押します。

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

  • 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" ビューが表示されたら完了です。

2.3 アンインストール手順

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

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

  1. ステータスメニューに表示されているクジラ (Docker) アイコンをクリックします。

  2. ドロップダウンメニューから Troubleshoot を選択します。

  3. 開いたウィンドウの [Uninstall ] をクリックします。

  4. "Uninstall Docker Desktop" の確認画面の [Uninstall ] ボタンをクリックします。

  5. "Docker Desktop Uninstalled successfully" の画面が表示されます。

  • "You can move the Docker Desktop application to the trash." のメッセージを確認します。

  • [Quit ] ボタンを押して画面を閉じます。

  1. Finder でアプリケーションの一覧を表示し、Docker アイコンをごみ箱に移動します。

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

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

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

  1. Docker Desktop の起動

  2. ターミナルの起動

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

  4. Docker コンテナの起動

  5. bash の開始

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

  7. Docker コンテナの停止

3.1 Docker Desktop の起動

通常はログイン時に自動的にスタートアップするようにインストールされているので、起動のための操作を行う必要はありません。

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

  1. Finder アプリを起動して、アプリケーションの一覧にある Docker Desktop をダブルクリックします。

Docker Desktop の起動には少し時間がかかります。 Docker Desktop の起動が完了したかの確認方法は下記のとおりです。

  1. ステータスメニューに表示されるクジラアイコンで状態を確認します。

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

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

3.2 ターミナル の起動

docker コマンドを実行するため、ターミナルを起動します。

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

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

ダウンロード

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

Docker イメージのロード

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

$ 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
$
  1. ローカルストレージに保管されたことを確認するには、docker images コマンドを実行します。REPOSITORY が hpci/gsi-openssh で、TAG の値が Docker イメージのファイル名にある日付に一致する行が存在することを確認します。

$ docker images hpci/gsi-openssh
REPOSITORY         TAG        IMAGE ID       CREATED       SIZE
hpci/gsi-openssh   20240209   dd8e64a66353   7 weeks ago   320MB
$

3.4 Docker コンテナの起動

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

$ docker run -d --rm --name gsi-openssh -v /Users/username/Documents:/home/hpciuser/work hpci/gsi-openssh:20240209
f0f6cc76a2a97fc2a8b17029efc6ca30d8360dd9610e3755ccad1939142d90b0
$

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

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

-d

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

--rm

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

--name NAME

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

-v LIST

ホスト OS 上のディレクトリ HOST-DIR をコンテナ上のディレクトリ CONTAINER-DIR にマウントします。LIST は HOST-DIR:CONTAINER-DIR の書式で指定します。

上記の例では、macOS 上のユーザの Documents フォルダ (/Users/username/Documents) をコンテナの /home/hpciuser/work ディレクトリとして参照できるようにしています。

注意

Apple シリコンを搭載した Mac で実行する場合、これまでは --platform linux/amd64 という引数を指定する必要がありました。Apple シリコンを登載した Mac 用の Docker イメージを利用する場合、この引数は不要です。

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

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

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

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

注意

macOS 10.14 (Mojave) 以降、アプリケーションから Documents フォルダへのアクセスが制限されている場合があります。その場合は、[システム環境設定] の [セキュリティとプライバシー] でアクセスを許可するか、別途ホームディレクトリ下に作業用フォルダを作成して使用してください。

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

CONTAINER ID

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

IMAGE

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

NAMES

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

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

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

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

$ docker ps --format "{{.Names}} {{.ID}} {{.Image}}"
gsi-openssh f0f6cc76a2a9 hpci/gsi-openssh:20240209
$

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 です。

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

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

-i

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

-t

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

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

  • プロンプトはコンテナで実行中の 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. コンテナからターミナルに戻るには、bash 上で exit を実行します。

[hpciuser@XXXXXXXXXXXX ~]$ exit
exit
$

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

3.8 Docker コンテナの停止

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

$ docker stop gsi-openssh
gsi-openssh
$

注意

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

3.9 ファイル共有について

docker run コマンドの -v LIST 引数で、ファイル共有を設定したフォルダをマウントすると、コンテナと macOS の間でファイルを共有できます。

ファイル共有を設定したフォルダをマウントしたコンテナ上のディレクトリでは、ファイルの owner、group は下記になります。

owner

hpciuser

group

hpciuser

macOS 上では、コンテナ上で作成したファイルの owner と group は docker run を実行したユーザに設定されます。

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) をロードして、両方のバージョンを保管しておくことが可能です。

$  docker images hpci/gsi-openssh
REPOSITORY         TAG        IMAGE ID       CREATED         SIZE
hpci/gsi-openssh   20240209   dd8e64a66353   7 weeks ago    320MB
hpci/gsi-openssh   20231128   12a54c4e3ec3   4 months ago   466MB
$

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

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

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

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

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

Docker コンテナの停止

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

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

$ docker ps
CONTAINER ID   IMAGE                       COMMAND                  CREATED         STATUS         PORTS     NAMES
e84e582b72c9   hpci/gsi-openssh:20231128   "sudo /usr/sbin/cron…"   2 minutes ago   Up 2 minutes             gsi-openssh
$

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

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

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

$ docker stop gsi-openssh
gsi-openssh
$

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

Docker コンテナの削除

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

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

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

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

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

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

$ docker rm gsi-openssh
gsi-openssh
$

Docker イメージの削除

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

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

$ 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
$

注意

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

$ docker rmi hpci/gsi-openssh:20231128
Error response from daemon: conflict: unable to remove repository reference "hpci/gsi-openssh:20231128" (must force) - container e84e582b72c9 is using its referenced image 12a54c4e3ec3
$

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

注意

Apple シリコンを登載した Mac での動作は未確認です。

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

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

5.1 XQuartz の導入手順

5.1.1 ダウンロード

XQuartz の Web サイトから XQuartz のインストーラをダウンロードします。本稿執筆時点の最新バージョンは 2.8.5 です。

5.1.2 インストール

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

  • XQuartz-2.8.5 というタイトルのウィンドウが開きます。

  • XQuartz.pkg という名前のアイコンをダブルクリックします。

  1. 警告画面が表示されます。

  • 「このパッケージは、ソフトウェアをインストールできるかどうかを判断するプログラムを実行します。」

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

  1. 「インストール」ウィンドウが表示されます。

    • 7 つの項目が列挙されています。

      • はじめに

      • 大切な情報

      • 使用許諾契約

      • インストール先

      • インストールの種類

      • インストール

      • 概要

    • インストーラが表示する順序に従って操作を進めます。

  2. はじめに

  • 内容を確認します。

  • [ 続ける ] ボタンを押します。

  1. 大切な情報

  • 内容を確認します。

  • [ 続ける ] ボタンを押します。

  1. 使用許諾契約

  • 内容を確認します。

  • [ 続ける ] ボタンを押します。

  • ソフトウェア使用許諾契約の同意ダイアログが表示されます。

    • 「このソフトウェアのインストールを続けるには、ソフトウェア使用許諾契約の条件に同意する必要があります。」

    • [ 同意する ] ボタンを押します。

  1. インストール先

  • 「使用許諾契約」に同意したら、次に表示する項目は「インストール先」ではなく、その次の「インストールの種類」です。「インストール先」の内容は、「インストールの種類」で [ インストール先を変更... ] ボタンを押した場合に限り、表示されます。

    • インストール先を選択します。

    • [ 続ける ] ボタンを押します。

    • 「インストールの種類」に戻ります。

  1. インストールの種類

  • 最初はインストール先として "Macintosh HD" が選択されています。

    • 変更が必要ならば [ インストール先を変更... ] ボタンを押します。

    • 「インストール先」に戻ります。

    • 「インストール先」での操作が終わったらここに戻ってきます。

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

  1. インストール

  • 「インストーラが新しいソフトウェアをインストールしようとしています。」というダイアログが表示されます。

  • パスワード欄にパスワードをを入力し、 [ ソフトウェアをインストール ] ボタンを押します。

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

  1. 概要

  • 「インストールが完了しました。」と表示されます。

  • [ ログアウト ] ボタンを押します。

  • インストーラの処分に関するダイアログが表示されます。

    • 「 "" のインストーラをゴミ箱に入れますか? 」

    • [ 残す ] または [ ゴミ箱に入れる ] のどちらかを選択します。

  • 選択すると、自動的にログアウトします。

  1. 再度ログインします。

  • これでインストール作業は終了です。

5.1.3 設定

  • XQuartz を起動します。

  • メニューの「環境設定」を選択します。

    • 「X11の環境設定」画面の「セキュリティ」タブを開く

    • 下記2項目のチェックボックスをチェックする

      • 接続を認証

      • ネットワーク・クライアントからの接続を許可

    • 設定を有効にするため XQuartz を再起動します。

      • メニューで X11 を終了する

      • XQuartz を起動

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

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

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

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

  1. xhost コマンドで 127.0.0.1 をアクセスコントロールリストに追加します

$ xhost
access control enabled, only authorized clients can connect
$ xhost +127.0.0.1
127.0.0.1 being added to access control list
$ xhost
access control enabled, only authorized clients can connect
INET:localhost
$
  1. Docker イメージを docker run コマンドで実行します。

$ docker run -d --rm --name gsi-openssh -v /Users/username/Documents:/home/hpciuser/work -e DISPLAY=host.docker.internal:0 hpci/gsi-openssh:20230322

コマンドの引数に -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
*****************************************************************
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:15:17 2021 from XXX.XXX.XXX.XXX
[hpci00xxxx@das ~]$

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

-Y

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

  1. xeyes を実行します

[hpci00xxxx@das ~]$ xeyes

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

6.1 sudo

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

  • /etc/sudoers.d/hpciuser