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


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

ユーザーを指定してコマンドを実行する: udocker -q run --user=$USER --hostenv --bindhome --hostauth ubuntu コマンド

ユーザーのホスト上での環境変数を引き継いで、udockerを実行する

$ ./udocker -q run --user=$USER --hostenv --bindhome --hostauth ubuntu whoami; pwd
user12345
/home/user12345
  • --user=指定のユーザー:環境変数の$USERを指定してコンテナ上で利用するユーザーを設定
  • --hostenv: ホストの環境変数を引き継ぐための設定
  • --bindhome: ホームディレクトリをそのままバインドするための設定

ここでは架空のユーザー"user12345"の結果を表示している。ユーザーとカレントディレクトリがコンテナ環境で利用できている事がわかる

ここでpythonを実行してみる

$ python --version
Python 2.7.5
$./udocker -q run --user=$USER --hostenv --bindhome --hostauth ubuntu python --version
Error: command not found or has no execute bit set:  ['python']
  • 最初のコマンドはホスト上で実行され、ホストのpythonのバージョン番号が表示される
  • 次のコマンドはコンテナ上で実行され、pythonが存在しないためエラーとなっている

コンテナ上にpythonをapt-getを利用してインストールしてみる

$ apt-get
bash: apt-get: command not found...
$ ./udocker -q run ubuntu apt-get install -y python 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  file libexpat1 libffi6 libmagic1 libpython-stdlib libpython2.7-minimal libpython2.7-stdlib libsqlite3-0 libssl1.0.0 mime-support python-minimal python2.7
  python2.7-minimal
Suggested packages:
  python-doc python-tk python2.7-doc binutils binfmt-support
The following NEW packages will be installed:
  file libexpat1 libffi6 libmagic1 libpython-stdlib libpython2.7-minimal libpython2.7-stdlib libsqlite3-0 libssl1.0.0 mime-support python python-minimal python2.7
  python2.7-minimal
0 upgraded, 14 newly installed, 0 to remove and 0 not upgraded.
Need to get 5714 kB of archives.
After this operation, 25.7 MB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libpython2.7-minimal amd64 2.7.12-1ubuntu0~16.04.3 [340 kB]
Get:2 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python2.7-minimal amd64 2.7.12-1ubuntu0~16.04.3 [1261 kB]
...
Setting up libpython2.7-stdlib:amd64 (2.7.12-1ubuntu0~16.04.3) ...
Setting up python2.7 (2.7.12-1ubuntu0~16.04.3) ...
Setting up libpython-stdlib:amd64 (2.7.11-1) ...
Setting up python (2.7.11-1) ...
Setting up libmagic1:amd64 (1:5.25-2ubuntu1) ...
Setting up file (1:5.25-2ubuntu1) ...
Processing triggers for libc-bin (2.23-0ubuntu10) ...

ログが長いので途中省略

  • 最初のコマンドはホスト上で実行され、apt-getが存在しないためエラーとなっている
  • 次のコマンドはコンテナ上で実行され、--userが指定されていないので、root権限でapt-getが実行され、pythonがインストールされる

コンテナ上のpythonのバージョンを確認する

$ ./udocker -q run ubuntu python --version
Python 2.7.12

python 2.7.12がインストールされた事がわかる

ホスト上でrootの権限を持っていなくても、コンテナ上ではroot権限でapt-getを利用してパッケージがインストールができる事がわかった
(ここではホストのOSはRed Hat Linuxなので、もし、管理権限を持っていて、ホスト上にパッケージのインストールを行うにとすればyumを利用することになる点に留意)

今日はここまで