「DockerでRELION」の版間の差分
提供: Eospedia
(ページの作成:「== 下準備 == * DockerとNVIDIA Dockerをインストールする。→ DockerとNVIDIA_Dockerのインストール == Dockerfile書く == * 色々と保証し兼...」) |
(→Dockerfile書く) |
||
行6: | 行6: | ||
* 色々と保証し兼ねますし、必要十分なところまで整理できていませんが、取り急ぎ書いたDockerfileのテンプレートを公開しておきます。 | * 色々と保証し兼ねますし、必要十分なところまで整理できていませんが、取り急ぎ書いたDockerfileのテンプレートを公開しておきます。 | ||
** https://github.com/kttn8769/cryoem-docker.git | ** https://github.com/kttn8769/cryoem-docker.git | ||
+ | * Dockerの使い方としてまともかどうかもわからないので、もしかすると参考にしないほうがいいかもしれません。 | ||
+ | |||
* 以下の説明は上記Dockerfileのテンプレートを使用した場合について書きます。 | * 以下の説明は上記Dockerfileのテンプレートを使用した場合について書きます。 | ||
+ | |||
+ | <pre> | ||
+ | $ git clone https://github.com/kttn8769/cryoem-docker.git | ||
+ | $ cd cryoem-docker | ||
+ | </pre> | ||
+ | |||
+ | |||
+ | cryoem-docker内のDockerfileの以下の部分について、適切に設定してください。 | ||
+ | |||
+ | <pre> | ||
+ | ### Base image: DockerHub nvidia/cuda, CUDA v9.2, cuDNN v7, development package, CentOS7 | ||
+ | FROM nvidia/cuda:9.2-cudnn7-devel-centos7 | ||
+ | |||
+ | ### User account in Docker image | ||
+ | # username | ||
+ | ARG USER_NAME="" | ||
+ | # UID | ||
+ | ARG USER_ID="" | ||
+ | # GID | ||
+ | ARG GROUP_ID="" | ||
+ | # SSH public key | ||
+ | ARG USER_SSH_PUBKEY="" | ||
+ | |||
+ | ### Software configs | ||
+ | ARG RELION_VERSION="3.0.5" | ||
+ | ARG RELION_BUILD_NUM_THREADS="12" | ||
+ | ARG GCTF_BIN_URL="https://www.mrc-lmb.cam.ac.uk/kzhang/Gctf/Gctf_v1.18_b2/bin/Gctf_v1.18_b2_sm61_cu9.2" | ||
+ | ARG GCTF_LIB_URL="https://www.mrc-lmb.cam.ac.uk/kzhang/Gctf/Gctf_v1.18_b2/lib/libEMcore_sm61_cu9.2.so" | ||
+ | </pre> | ||
+ | |||
+ | 特にユーザーを作らずにDockerコンテナを立ち上げると、rootユーザーしか存在しません。Dockerコンテナ内でのrootユーザーはホストマシンにおいてもrootユーザーと認識されるため、ホストマシンのディレクトリをコンテナにマウントした時にファイル所有権の関係で鬱陶しいことになります。コンテナにsshする時にも問題になります。 | ||
+ | |||
+ | ということで、上記の様にDockerfileの冒頭で、ホストマシンのユーザーと同じユーザー名、UID、GIDを持つユーザーを作成しています。こうするとファイル共有もsshも楽になります。 | ||
+ | |||
+ | UIDとGIDは以下コマンドで調べてください。Ubuntuだと4桁の数字になると思います。 | ||
+ | |||
+ | <pre> | ||
+ | $ id | ||
+ | uid=1003(kttn) gid=1006(kttn) groups=1006(kttn),27(sudo),999(docker),2002(vglusers) | ||
+ | </pre> | ||
+ | |||
+ | |||
+ | また、GCTFのsmも、ホストマシンのGPUのcompute capabilityを調べて適切なものに変更してください。 | ||
+ | |||
+ | USER_SSH_PUBKEYには、ユーザーのssh公開鍵の中身をそのままコピペします。そうすることで、ホストマシンから鍵交換でコンテナ内にsshログインできます。 | ||
+ | |||
+ | |||
+ | == Dockerイメージのビルド == | ||
+ | Dockerfileがあるディレクトリで、Dockerイメージをビルドします。 | ||
+ | <pre> | ||
+ | $ docker build -t <Dockerイメージにつけたい名前> . | ||
+ | </pre> |
2019年5月17日 (金) 15:30時点における版
下準備
- DockerとNVIDIA Dockerをインストールする。→ DockerとNVIDIA_Dockerのインストール
Dockerfile書く
- 色々と保証し兼ねますし、必要十分なところまで整理できていませんが、取り急ぎ書いたDockerfileのテンプレートを公開しておきます。
- Dockerの使い方としてまともかどうかもわからないので、もしかすると参考にしないほうがいいかもしれません。
- 以下の説明は上記Dockerfileのテンプレートを使用した場合について書きます。
$ git clone https://github.com/kttn8769/cryoem-docker.git $ cd cryoem-docker
cryoem-docker内のDockerfileの以下の部分について、適切に設定してください。
### Base image: DockerHub nvidia/cuda, CUDA v9.2, cuDNN v7, development package, CentOS7 FROM nvidia/cuda:9.2-cudnn7-devel-centos7 ### User account in Docker image # username ARG USER_NAME="" # UID ARG USER_ID="" # GID ARG GROUP_ID="" # SSH public key ARG USER_SSH_PUBKEY="" ### Software configs ARG RELION_VERSION="3.0.5" ARG RELION_BUILD_NUM_THREADS="12" ARG GCTF_BIN_URL="https://www.mrc-lmb.cam.ac.uk/kzhang/Gctf/Gctf_v1.18_b2/bin/Gctf_v1.18_b2_sm61_cu9.2" ARG GCTF_LIB_URL="https://www.mrc-lmb.cam.ac.uk/kzhang/Gctf/Gctf_v1.18_b2/lib/libEMcore_sm61_cu9.2.so"
特にユーザーを作らずにDockerコンテナを立ち上げると、rootユーザーしか存在しません。Dockerコンテナ内でのrootユーザーはホストマシンにおいてもrootユーザーと認識されるため、ホストマシンのディレクトリをコンテナにマウントした時にファイル所有権の関係で鬱陶しいことになります。コンテナにsshする時にも問題になります。
ということで、上記の様にDockerfileの冒頭で、ホストマシンのユーザーと同じユーザー名、UID、GIDを持つユーザーを作成しています。こうするとファイル共有もsshも楽になります。
UIDとGIDは以下コマンドで調べてください。Ubuntuだと4桁の数字になると思います。
$ id uid=1003(kttn) gid=1006(kttn) groups=1006(kttn),27(sudo),999(docker),2002(vglusers)
また、GCTFのsmも、ホストマシンのGPUのcompute capabilityを調べて適切なものに変更してください。
USER_SSH_PUBKEYには、ユーザーのssh公開鍵の中身をそのままコピペします。そうすることで、ホストマシンから鍵交換でコンテナ内にsshログインできます。
Dockerイメージのビルド
Dockerfileがあるディレクトリで、Dockerイメージをビルドします。
$ docker build -t <Dockerイメージにつけたい名前> .