5. クラスター計算機で udocker を利用する: 基本コマンド編-3


基本コマンド編-2に引き続いて、基本的なコマンドの実行を行う

udocker ps: 展開済みのコンテナの一覧

docker ps は動作中のコンテナの一覧を表示するが、udocker psは展開されているコンテナの一覧を表示する

$ ./udocker ps
CONTAINER ID                         P M NAMES              IMAGE
0ca3cd40-ff32-35c2-a4dd-d0e331ba449c . W ['ubuntu']         ubuntu:latest
577c1cc4-603a-30b3-a78c-773c14d22e28 . W                    debian:latest
f7c8f293-77a6-3c65-bb78-94d7da03c206 . W                    debian:latest

udocker run イメージ名で多数のコンテナを利用すると、何やらやたらと起動しているように見える

udocker run イメージ名では、実行した時点でユーザーのディレクトリ上にファイルを展開し、そのディレクトリをルートディレクトリとして見えるように実行環境に介入しているだけなので、実際に仮想マシンが起動しているという意味ではない

udocker run イメージ名で起動したコンテナは異なるCONTAINER IDを与えられて、どんどん増えていく

これを避けるには、udocker runコマンドで

  • 既存のCONTAINER IDを指定するか
  • udocker create --nameで名前を付けたコンテナ名を指定するか

のいずれかの方法を利用して、一度展開したコンテナのファイルを再利用することが望ましい

ここは起動したコンテナを終了させると実行中のコンテナの一覧から存在しなくなるdocker runとは大きく異るところ

というわけで、増やしてしまったコンテナを消去する手立ては次の通り

udocker rm コンテナ ID : 展開したコンテナの消去

コンテナのIDを指定して、展開したコンテナを消去する

$ ./udocker ps
CONTAINER ID                         P M NAMES              IMAGE
0ca3cd40-ff32-35c2-a4dd-d0e331ba449c . W ['ubuntu']         ubuntu:latest
577c1cc4-603a-30b3-a78c-773c14d22e28 . W                    debian:latest
f7c8f293-77a6-3c65-bb78-94d7da03c206 . W                    debian:latest
$ ./udocker rm 577c1cc4-603a-30b3-a78c-773c14d22e28
Info: deleting container: 577c1cc4-603a-30b3-a78c-773c14d22e28
$ ./udocker ps
CONTAINER ID                         P M NAMES              IMAGE
0ca3cd40-ff32-35c2-a4dd-d0e331ba449c . W ['ubuntu']         ubuntu:latest
f7c8f293-77a6-3c65-bb78-94d7da03c206 . W                    debian:latest
  • udocker psで起動中(ここでは展開中のコンテナの意味)を取得
  • udocker rmでCONTAINER IDを指定してコンテナを消去
  • udocker psで起動中(ここでは展開中のコンテナの意味)で、rmで消去したコンテナが表示されない事を確認

確かに、577c1cc4-603a-30b3-a78c-773c14d22e28というIDのコンテナが消去された

そんなわけで、udockerを利用する際には、

  • udocker createで名前を付けてコンテナを展開
  • udocker runでcreate時に付与した名前を指定してコンテナを利用

という手順でコンテナを利用して行くほうが良い

ここに留意しないと、ディスク上に大量に展開されたコンテナでディスクが逼迫する事になる

udocker protect: 誤って消去しないようにコンテナを保護する

udocker rmコマンドが利用できると、間違ってコンテナを消去してしまう事も有るかもしれない。どうしても消してしまっては困るコンテナを保護するにはudocker protectを利用しよう

$ ./udocker protect ubuntu
$ ./udocker ps
CONTAINER ID                         P M NAMES              IMAGE
0ca3cd40-ff32-35c2-a4dd-d0e331ba449c P W ['ubuntu']         ubuntu:latest
f7c8f293-77a6-3c65-bb78-94d7da03c206 . W                    debian:latest
$ ./udocker rm 0ca3cd40-ff32-35c2-a4dd-d0e331ba449c
Error: container is protected
  • udocker protectで名前(又はコンテナID)を指定してコンテナを保護
  • udocker psで Pのカラムが ”.”から”P”に変化している事を確認
  • udocker rmで保護したコンテナが消去できない事を確認

消去しようとするとエラーが発生する

udocker unprotect: コンテナの保護を取り消す

udocker unprotect 名前(又はコンテナID)でコンテナを消去できるようにする
実行例は示さない...

今日はここまで