Python
docker
udocker

1. クラスター計算機で udocker を利用する: 紹介編

docker が動かないなら udockerを使えばいいじゃない

docker はとても便利なツールで、Windows/OS X/Linuxと各環境下動作する
これまでは様々なツールの使い勝手を試そうと思っても

  • そのツールをコンパイルする事が困難だったり
  • コンパイルできてもライブラリーの思わぬ差で動作しなかったり
  • 動作しても正しくは動作しなかったり
  • そのツールが利用している他のツールが動かなかったり

どんなに良さそうなツールでも、いざ利用するまでの手間が大変だった

dockerはこの一連の苦痛を相当程度和らげてくれてる

  • もしそのツールがdocker hub に置かれているならば、コマンド一発でダウンロードして試してみる事ができる
  • docker hubに無くても、ツールの動作環境が記載されていれば、その環境に近い imageを元に割りと簡単にツールが動作する環境をつくりだせる

そんなdockerにもちょっとした弱点が有る
手元のコンピューターにdockerの環境を構築するのはとても容易で、Windows/OS X/Linuxどれも基本的にはインストーラーを起動して指示に従うだけ

ただ、手元のコンピューターでそれが動作したら、可能ならそのまま自分が利用できる大きな計算機でも使ってみたいと思うだろう

ここから困難が始まる

あなたの利用できる計算機に既にdockerの環境が準備されていたら

  • 利用規約を確認
    • 恐らく、コンテナ内で実行可能なアプリケーションについては、システム管理側の要請による何らかの制約はあると思う
  • docker コンテナをpull して実行

もし、dockerがインストールされてなくて、さらにdocker環境の構築も色々な制約で困難だったときはudockerを利用しよう

udockerとは何か

udockerの特徴にはこんなものがある

  • dockerがインストールされていなくても、docker イメージを利用できる
  • docker hubから イメージをダウンロードできる
  • まるで普通のdockerを利用しているかのようにコマンドを実行できる
  • udockerのインストールも実行も完全に自分のユーザー権限で行う事ができる

一方で、udockerにはこんな制約がある

  • ホストのOSはLinuxに限定される prootが動く環境が必要
  • ネットワークは仮想化できない
    • 仮想ネットワークを作成してルーティングを...などという事はできない
    • docker composeは利用できない
  • システムの管理権限が必要なリソースを操作する事はできない
    • 例えば一般ユーザーはネットワークのポート番号1024以下のポートを直接操作できないので、80番ポートでウェッブサーバーを起動する等という事はできない。
  • 仮想環境を利用しているかのようにリソースをマッピングしているだけだということを常に意識する必要がある
    • ファイルの操作は実環境のファイルに対して実行されているので、"rm -r" 等の操作には十分注意が必要
    • 実行環境毎にディレクトリを分けないと複数のプロセスで上書きするという悲惨な事になりかねない

という事で、udockerは何かを紹介したところで今日はここまで:smiley: