Ubuntu on WSL を用いたHPCIログイン¶
0. 変更履歴¶
0.1 主な変更内容¶
2024.09.09¶
Docker イメージを gsi-openssh-20240902.tar.xz に更新しました。
2024.04.05¶
ログイン手順の一部を利用者の環境に合わせて修正しました。
2024.03.29¶
Docker イメージを gsi-openssh-20240209.tar.xz に更新しました。
2023.12.28¶
Docker イメージを gsi-openssh-20231128.tar.xz に更新しました。
2023.07.31¶
一部の項目で文章表現や構成を修正しました。
本書のテキスト版の提供を終了しました。
2023.06.16¶
Docker イメージを gsi-openssh-20230322.tar.xz に更新しました。
2023.04.28¶
参照するドキュメントの URL を修正しました。
2022.12.19¶
タイトルを変更しました。
2022.07.15¶
英語版ドキュメントを作成しました。
Docker イメージを gsi-openssh-20220325.tar.xz に更新しました。
2022.01.31¶
初版を公開しました。
1. 概要¶
本書は、Windows 10 の利用者を対象に、Ubuntu on WSL を利用して HPCI 環境にログインする方法について解説したマニュアルです。
本書で説明する方法では、WSL2 上の Ubuntu で実行する Docker Engine でコンテナを実行します。Docker Desktop for Windows は使用しません。
1.1 用語¶
- イメージ
コンテナの基礎となるものです。
- コンテナ
イメージを実行するときの実体です。
- リポジトリ
Docker イメージの集まりです。
- タグ
リポジトリ内のイメージを区別するために割り当てるラベルのことです。
1.2 動作環境¶
Windows マシンが以下を満たしていることが必要です。
WSL の詳細は Microsoft のドキュメント Windows Subsystem for Linux に関するドキュメント を参照してください。
前提条件についての最新の情報は Microsoft の WSL ドキュメント 前提条件 を参照してください。
WSL を導入するために必要なシステムの要件¶
Windows 10 64bit version 2004 (build 19041) or higher
1.3 WSL のインストール¶
Windows マシンに WSL、および Linux ディストリビューションとして Ubuntu をインストールします。
インストール手順の詳細は Microsoft のドキュメント WSL のインストール を参照してください。
既に Docker Desktop for Windows を WSL2 バックエンドで利用している環境では、本手順を実施する必要はありません。
インストール手順¶
PowerShellを管理者として実行します。
- [クイックリンク] メニューを表示します。
表示するには、 [ スタート ] ボタンを右クリック、または Windows ロゴ キー + X キー を押します。
を選択します。
「このアプリがデバイスに変更を加えることを許可しますか?」と確認を求めてきたら [ はい ] を選択して続行します。
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>
メッセージに従い、WSL のインストールを完了するため、システムを再起動します。
デフォルト UNIX ユーザアカウントを設定します。
Windows にログインし直した後、Ubuntu を実行してデフォルト UNIX ユーザアカウントを作成する必要があります。
デフォルト UNIX ユーザアカウントの詳細は Microsoft のドキュメント Linux ユーザー名とパスワードを設定する を参照してください。
Ubuntu は再起動後の Windows へのログインで自動的に起動します。Ubuntu が起動しない場合は下記の操作により起動してください。
[ スタート ] ボタンを押して、アプリの一覧から [ ] を選択します。
以上で WSL および Ubuntu のインストールは完了です。
パッケージの更新とアップグレード¶
パッケージマネージャを使用して、パッケージを定期的に更新およびアップグレードすることをお勧めします。次のコマンドを使用します。
$ sudo apt update && sudo apt upgrade
2. Docker Engine のインストール手順¶
注意
Docker Desktop の有料化に伴い、Docker Desktop for Windows の利用をやめる場合、間違って Docker Desktop 用のコマンドを実行してしまうことを防ぐため、Docker Engine のインストールを行う前に、 Dockerを用いたHPCIログイン (Windows10編) の「 2.3 アンインストール手順 」の手順に従って Docker Desktop for Windows をアンインストールしてください。
WSL 上の Ubuntu に Docker Engine をインストールします。
インストール手順の詳細は Docker のドキュメント Install Docker Engine on Ubuntu を参照してください。ただし WSL2 上の Ubuntu での操作を記述したものではないので、以下の説明と異なる部分があります。
2.1. インストール手順¶
Ubuntu の起動¶
「 1.3 WSL のインストール 」でインストールした Ubuntu を起動します。
[ スタート ] ボタンを押して、アプリの一覧から [ ] を選択します。
古いバージョンのアンインストール¶
古い Docker のパッケージ docker、docker.io、docker-engine がインストールされている場合はアンインストールします。
$ sudo apt-get remove docker docker-engine docker.io containerd runc
Docker リポジトリのセットアップ¶
Docker を配布している Docker リポジトリの情報を apt に登録します。
aptが HTTPS 経由でリポジトリにアクセスしパッケージをインストールできるようにするため、以下のパッケージをインストールします。
$ sudo apt-get update $ sudo apt-get install ca-certificates curl gnupg lsb-release
Docker の公式 GPG 鍵を追加します。
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
以下のコマンドを使って安定版(stable)リポジトリをセットアップします。
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Docker Engine のインストール¶
Docker と containerd の最新版をインストールします。
$ sudo apt-get update $ sudo apt-get install docker-ce docker-ce-cli containerd.io
docker コマンドが実行できることを確認します。
$ sudo docker -v Docker version 20.10.17, build 100c701 $
Docker デーモンを起動します (WSL 上の Ubuntu では Docker デーモンが自動起動しないので、手動で起動する必要があります)。
$ sudo service docker start * Starting Docker: docker [ OK ] $
Docker Engine が正しくインストールされているのを確認するため、hello-worldイメージを実行します。
$ sudo docker run hello-world実行時の出力例は以下のとおりです。
$ sudo docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 2db29710123e: Pull complete Digest: sha256:975f4b14f326b05db86e16de00144f9c12257553bba9484fed41f9b6f2257800 Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/get-started/ $
2.2. インストール後の設定¶
非特権ユーザが docker コマンドを実行できるようにする¶
docker コマンドの実行には sudo が必要になります。非特権ユーザでも docker コマンドを実行できるようにするには、ユーザを docker グループに追加します。
詳細は Docker のドキュメント Manage Docker as a non-root user を参照してください。
ユーザをdockerグループに追加します。
$ sudo usermod -aG docker $USER
グループに属したことが認識されるようにするため、exit コマンドで Ubuntu を終了して、Ubuntu を起動し直してください。
sudo がなくても docker コマンドが実行できることを確認します。
$ docker run hello-world
自動起動設定¶
「 Docker Engine のインストール 」の手順にあるとおり、WSL 上の Ubuntu では Docker デーモンが自動起動しません。Ubuntu を起動した後で、手動で起動する必要があります。
以下の設定により、Ubuntu を起動するタイミングで Docker デーモンの自動起動を行うことができます。
visudo を実行します。デフォルトでは nano エディタが起動します。
$ sudo visudo
以下の内容を記述します。
# Allow members of group docker to %docker ALL=(ALL) NOPASSWD: /usr/sbin/service docker start, /usr/sbin/service docker stop, /usr/sbin/service docker restart
変更内容を保存してエディタを終了します。
$HOME/.bashrc に docker サービスを起動するスクリプトを追加します。
# docker daemon service docker status > /dev/null 2>&1 if [ $? = 1 ]; then sudo service docker start fi
次回 Ubuntu 起動時から、docker デーモンが自動起動します。
バインドマウント用ディレクトリ作成¶
gsi-openssh の Docker イメージを実行する際に、バインドマウントするディレクトリを予め作成します。この例では、デフォルトユーザのホームディレクトリに work という名前で作成しています。
ホームディレクトリに
work
という名前のディレクトリを作成します。
$ cd $ mkdir work
work の所有者およびグループを、コンテナ上のユーザ hpciuser の uid, gid に変更します。
$ sudo chown 2000:2000 workコンテナ上のユーザ hpciuser の uid, gid に関する情報は 「 bash の実行環境 」にあります。
3. HPCI 環境へのログイン手順¶
Windows 10 の WSL 上の Ubuntu で、 Docker Engine を利用して HPCI 環境にログインする手順について解説します。
流れは下記のとおりです。
Ubuntu の起動
Docker デーモンの起動
Docker イメージのロード (導入時のみ)
Docker コンテナの起動
bash の実行
ログインサーバへのログイン
Docker コンテナの停止
3.1 Ubuntu の起動¶
[ スタート ] ボタンを押して、アプリの一覧から [ ] を選択します。
3.2 Docker デーモンの起動¶
「自動起動設定 」で自動起動の設定を実施していない場合は、Docker デーモンを手動で起動します。
$ sudo service docker start * Starting Docker: docker [ OK ] $
3.3 Docker イメージのロード (導入時のみ)¶
Docker イメージをローカルストレージ領域に保管する必要があります。
ダウンロード¶
Docker イメージの最新版を下記 URL からダウンロードします。
以降の説明では、Docker イメージのファイル名を
gsi-openssh-20240209.tar.xz
としますので、ダウンロードしたファイル名に読み替えてください。
Docker イメージのロード¶
docker load コマンドで Docker イメージをロードします。
username@WINDOWSPC:~$ docker load -i gsi-openssh-20231128.tar.xz 51af9e44b4ea: Loading layer 196MB/196MB 88a6e38e08cb: Loading layer 285.3MB/285.3MB 730b7f317e6e: Loading layer 7.68kB/7.68kB 30e384109cb7: Loading layer 4.096kB/4.096kB 58d49e02e5bd: Loading layer 607.7kB/607.7kB 5f70bf18a086: Loading layer 1.024kB/1.024kB Loaded image: hpci/gsi-openssh:20231128 username@WINDOWSPC:~$
ローカルストレージに保管されたことを確認するには、docker images コマンドを実行します。REPOSITORY が hpci/gsi-openssh で、TAG の値が Docker イメージのファイル名にある日付に一致する行が存在することを確認します。
username@WINDOWSPC:~$ docker images hpci/gsi-openssh REPOSITORY TAG IMAGE ID CREATED SIZE hpci/gsi-openssh 20231128 12a54c4e3ec3 4 weeks ago 466MB username@WINDOWSPC:~$
3.4 Docker コンテナの起動¶
3.3 でロードした Docker イメージを docker run コマンドで実行します。
username@WINDOWSPC:~$ docker run -d --rm --name gsi-openssh -v ~/work:/home/hpciuser/work hpci/gsi-openssh:20231128 10c2073ab4d311aa51cdb114545540f27aa6668d39d002efd5798985ebc0857a 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 の書式で指定します。上記の例では、「 バインドマウント用ディレクトリ作成 」でバインドマウント用に作成した work ディレクトリ (~/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
ディレクトリ下の名前を指定してください。
正常に起動できているかどうか、docker ps コマンドで確認します。下記の欄に一致する情報が存在することを確認します。
- CONTAINER ID
docker run 実行時に表示されたコンテナ ID (の始めから12文字)
- IMAGE
引数に指定した Docker リポジトリ名:タグ名
- NAMES
--name オプションで指定した名前
username@WINDOWSPC:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 10c2073ab4d3 hpci/gsi-openssh:20231128 "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 10c2073ab4d3 hpci/gsi-openssh:20231128 username@WINDOWSPC:~$
3.5 bash の実行¶
bash の実行環境¶
bash の実行環境の設定は以下のとおりです。gsi-openssh-20240902.tar.xz
の Docker イメージではすべて固定値です。
- ユーザ名 (ユーザID)
hpciuser (2000)
- グループ名 (グループID)
hpciuser (2000)
- ホームディレクトリ
/home/hpciuser
- タイムゾーン (環境変数 TZ の設定値)
JST-9
bash の実行¶
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 プロセスの開始により、下記の表示となります。
プロンプトは Ubuntu のプロンプトではなく、bash のプロンプトとなります。
XXXXXXXXXXXX の部分はコンテナ ID の短縮形が表示されます。
3.6 ログインサーバへのログイン¶
本節ではログイン手順の概要を説明します。詳細は HPCI ログインマニュアル を参照してください。
代理証明書の発行¶
最初に、Web ブラウザで HPCI 証明書発行システム にアクセスして代理証明書を発行し、代理証明書リポジトリに格納する必要があります。
注意
代理証明書の有効期限は最大168時間です。
有効期限が切れたら、その都度発行 (格納) してください。
発行 (格納) 手順は以下のドキュメントを参照してください。
HPCI ログインマニュアル の「2.2. 代理証明書の発行手順」
代理証明書のダウンロード¶
コンテナ に代理証明書をダウンロードします。
手順の詳細は以下のドキュメントを参照してください。
HPCI ログインマニュアル の「2.3.2. myproxy-logon コマンドを利用して代理証明書をダウンロードする手順」
代理証明書のダウンロードができない場合は、以下のドキュメントをリンクを参照してください。
HPCI ログインマニュアル の「2.3.2.2. エラー対応方法」
HPCI 情報共有 CMS の トラブルシューティング - GSI-SSHシステム管理関連
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 ~]$
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 ~]$
ログインサーバへのログイン¶
手順の詳細は以下のドキュメントを参照してください。
HPCI ログインマニュアル の「2.4. ログインサーバへログインする手順」
ログインサーバにログインできない場合は以下のドキュメントを参照してください。
HPCI ログインマニュアル の「2.4.2. エラー対応方法」
HPCI 情報共有 CMS の トラブルシューティング - GSI-SSHシステム管理関連
ログインサーバにログインします。以下に東京工業大学のログインサーバ 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:~>
ログインサーバ から exit すると、 コンテナの bash に戻ります。
<HPCI-ID>@login1:~> exit logout Connection to login.t3.gsic.titech.ac.jp closed. [hpciuser@XXXXXXXXXXXX ~]$
3.7 bash の終了¶
コンテナから Ubuntu に戻るには、bash 上で exit を実行します。
[hpciuser@XXXXXXXXXXXX ~]$ exit exit username@WINDOWSPC:~$ exit
exit により bash プロセスは終了しますが、コンテナは停止していません。3.5 に従い bash を実行することで再度 gsissh コマンドを使用できます。代理証明書が有効期間内であれば、代理証明書をダウンロードしなおす必要はありません。
3.8 Docker コンテナの停止¶
コンテナを停止するには、docker stop コマンドを実行します。停止するコンテナ名は 3.4 で起動したコンテナ名を指定します。ここでは gsi-openssh です。
username@WINDOWSPC:~$ docker stop gsi-openssh gsi-openssh username@WINDOWSPC:~$
注意
コンテナを停止すると、そのコンテナは削除されます。コンテナ上に作成、保存したファイルも削除されます。コンテナを停止する前に、必要なファイルを Ubuntu に転送してください。
3.9 ボリュームへのファイルの保存について¶
docker run コマンドの -v LIST 引数で、Ubuntu 上のディレクトリをバインドマウントすると、コンテナと Ubuntu の間でファイルを共有できます。バインドマウント用のディレクトリの作成方法は「 バインドマウント用ディレクトリ作成 」を参照してください。
4. Docker イメージの更新手順¶
本章では、旧バージョンの Docker イメージを新バージョンの Docker イメージに更新する手順を説明します。
説明では以下の名前を使用します。実際に使用するバージョンで読み替えてください。
Docker イメージ名
新バージョン
hpci/gsi-openssh:20240902
旧バージョン
hpci/gsi-openssh:20240209
4.1 異なるバージョンの Docker イメージの保管について¶
Docker イメージはバージョンをタグで識別するので、hpci/gsi-openssh の複数のバージョンをローカルストレージに保管することができます。旧バージョン (hpci/gsi-openssh:20240209) を既にロード済みの環境に新バージョン (hpci/gsi-openssh:20240902) をロードして、両方のバージョンを保管しておくことが可能です。
username@WINDOWSPC:~$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE hpci/gsi-openssh 20240902 b3c96bb6283d 10 days ago 310MB hpci/gsi-openssh 20240209 dd8e64a66353 7 months ago 320MB username@WINDOWSPC:~$
言い換えると、新バージョンのイメージをロードしても、ロード済みの旧バージョンは自動的には削除されません。旧バージョンのイメージが不要な場合は、明示的に削除する必要があります。
4.2 新バージョンの Docker イメージの導入¶
新バージョンの Docker イメージを導入するには、最初の導入時と同様に 3.3 Docker イメージのロード (導入時のみ) の手順に従って実行します。
4.3 旧バージョンの Docker イメージの削除¶
旧バージョンの Docker イメージが不要な場合、本節の手順にしたがってローカルストレージから削除します。
Docker コンテナの停止¶
削除する Docker イメージでコンテナを実行中の場合、まずコンテナを停止する必要があります。
実行中のコンテナを確認するには docker ps コマンドを実行します。
username@WINDOWSPC:~$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 30cbfe896943 hpci/gsi-openssh:20240209 "sudo /usr/sbin/cron…" 2 minutes ago Up 2 minutes gsi-openssh username@WINDOWSPC:~$旧バージョンの Docker イメージ (hpci/gsi-openssh:20240209) から生成したコンテナ gsi-openssh が実行中であることが確認できます。
実行中のコンテナを停止するには docker stop コマンドを実行します。
gsi-openssh という名前のコンテナを停止する場合は以下のように実行します。
username@WINDOWSPC:~$ docker stop gsi-openssh gsi-openssh username@WINDOWSPC:~$docker run コマンド実行時の引数に --rm を指定している場合は、コンテナの停止と同時にコンテナが削除されます。
Docker コンテナの削除¶
docker run コマンド実行時の引数に --rm を指定していない場合は、docker stop コマンドでコンテナを停止しただけではコンテナは削除されません。以下の手順でコンテナを削除してください。
停止中を含む全てのコンテナを確認するには docker ps -a コマンドを実行します。
username@WINDOWSPC:~$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 30cbfe896943 hpci/gsi-openssh:20240209 "sudo /usr/sbin/cron…" 4 minutes ago Exited (0) 2 minutes ago gsi-openssh username@WINDOWSPC:~$旧バージョンの Docker イメージ (hpci/gsi-openssh:20240209) から生成したコンテナ gsi-openssh が Exited の状態で存在していることが確認できます。
Docker コンテナを削除するには docker rm コマンドを実行します。
gsi-openssh という名前のコンテナを削除する場合は以下のように実行します。
username@WINDOWSPC:~$ docker rm gsi-openssh gsi-openssh username@WINDOWSPC:~$
Docker イメージの削除¶
Docker イメージを削除するには docker rmi コマンドを実行します。
hpci/gsi-openssh:20240209 という名前のイメージを削除する場合は以下のように実行します。
username@WINDOWSPC:~$ docker rmi hpci/gsi-openssh:20240209 Untagged: hpci/gsi-openssh:20240209 Deleted: sha256:dd8e64a66353987d617cf242913b2145a7d19cbc80c1fec01329d29997fe6fe0 Deleted: sha256:02d45363cf7630d18dc82f0561ad606a5371b31d21401bcee8d66b5d3cfe5475 Deleted: sha256:53a8a85090e505fae2ed361790bfde3e3fe35e25d5e513827be6dbe76e0aadc0 Deleted: sha256:a0d6a1a8cc9943689acd24e6402aaf89bdf3bb0c32a0af6d8761e316cc999c8c Deleted: sha256:ebfcbccf216ba5ac337f2d2a04909a7e6fa8ce69ab4adc19b39203efd04183d5 Deleted: sha256:8b72ea9dbe57bf486c9a45f5be486cb0d6a2172838e117894af48c34ee79d505 Deleted: sha256:bb077eef2bb1df3d5cd9dee745744763984d88397026509020f9fa7ff9697619 username@WINDOWSPC:~$注意
イメージから生成したコンテナが存在する状態で削除を実行すると、以下のようにエラーになります。
username@WINDOWSPC:~$ docker rmi hpci/gsi-openssh:20240209
- Error response from daemon: conflict: unable to remove repository reference "hpci/gsi-openssh:20240209" (must force) - container 30cbfe896943 is using its referenced image dd8e64a66353