CentOS6 on Google Compute EngineにDockerを入れ、Genome解析ツールをセットアップする
Genome解析ツールをGCE上で動かせる環境を構築します。
(次のツールをDockerコンテナ上にChefでインストールします)
- bwa
- samtools
- bowtie
- bowtie2
- VICUNA
1. GCEインスタンスに永続ディスクを追加します。
ncbi toolsのbuildに大きな領域(42GBくらい)が必要になるので、
500GBの永続ディスクを追加します。
1.1.コンソールの[COMPUTE ENGINE]-[ディスク]-[New disk]で追加します。
例:disk-1
アタッチするインスタンスと同じゾーンに作成する必要があります。
1.2.インスタンスにアタッチします。
インスタンス作成時に詳細設定を表示
をクリックし、ディスクを追加
で作成したdisk-1を選択します。
1.3.インスタンスにログインします。
1.4.mountしたい場所を作成します。
sudo mkdir /data
1.5.フォーマットかつマウントします。
デフォルトでは/dev/disk/by-id/google-xxxxに作成されています。
sudo /usr/share/google/safe_format_and_mount -m "mkfs.ext4 -F" /dev/disk/by-id/google-disk-1 /data
フォーマットせずマウントのみであれば次を実行します。
sudo /usr/share/google/safe_format_and_mount /dev/disk/by-id/google-disk-1 /data
1.6.mountされたことを確認します。
sudo df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 9.9G 1.1G 8.3G 12% /
tmpfs 3.5G 0 3.5G 0% /dev/shm
/dev/sdb 493G 198M 467G 1% /data
2. GCE側に/data/tmp
を作成します。
Dockerのワーク領域として作成します。
sudo mkdir /data/tmp
3. CentOS6 on GCEにDockerをインストールします。
sudo yum -y install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
sudo yum -y install docker-io
sudo service docker start
sudo chkconfig docker on
4. Docker用のtmpディレクトリを/data/tmp
に設定します
Dockerコンテナが大きくなるので、追加した永続ディスクに変更しないと
Error: write /tmp/docker-build199553949/xxx: no space left on device
といったエラーが発生します。
/etc/sysconfig/docker
に1行追加します。
export TMPDIR=/data/tmp
dockerを再起動します。
sudo service docker restart
5. コンテナ用の自前のDockerfileと初期化用ファイルを取得します。
(Ubuntu 14.04にruby+chefをインストールするお試し設定)
cd /data/
sudo yum install curl
sudo curl -o Dockerfile https://raw.githubusercontent.com/t-oginogin/dockerfiles/master/ubuntu/Dockerfile_chef
6. Dockerfileをビルドします。
sudo docker build -t t.oginogin/chef .
7. Dockerコンテナを起動します。
Dockerコンテナ側にも追加した永続ディスクをマウントします。
/data/ngsを作成してコンテナ側の/ngsにマウントします。
sudo mkdir /data/ngs
sudo docker run -it --name chef -v /data/ngs:/ngs t.oginogin/chef /bin/bash
8. rootでbashが起動するので、ユーザーubuntuでシェルを起動します。
su - ubuntu
9. ChefでGenome解析ツールをインストールします。
9.1. VICUNAをインストールする場合は、まずvicuna.zipをダウンロードし、GCE側のにアップロードしておきます。
注:作業はローカルマシンで行います。
vicuna.zipは次のサイトからダウンロードします。
ダウンロードにはユーザー登録が必要です。
ダウンロードしたvicuna.zipをGGE側にアップロードするには次のコマンドを実行します。
(TYPE-GOOGLE-COMPUTE-ENGINE-PUBLIC-IP-HEREはターゲットのIPアドレスに置き換えてください)
scp -o UserKnownHostsFile=/dev/null -o CheckHostIP=no -o StrictHostKeyChecking=no -i $HOME/.ssh/google_compute_engine vicuna.zip $USER@TYPE-GOOGLE-COMPUTE-ENGINE-PUBLIC-IP-HERE:/home/$USER
recipeでは/ngs/tmp/vicuna.zipに配置されていることを想定しているので、
移動しておきます。
sudo mkdir /data/ngs/tmp
sudo mv ~/vicuna.zip /data/ngs/tmp/
9.2. recipeを取得します。
Dockerコンテナ上での作業に戻ります。
sudo git clone https://github.com/t-oginogin/ngs_recipes.git /ngs/ngs_recipes
9.3. localhost.json内のパラメータ(user,passwordなど)を適宜変更します。
9.4. solo.rb内のcookbook_pathを適宜変更します。
取得したrecipeではworkに/ngs/chef-soloを使うことにしているので作成しておきます。
sudo mkdir /ngs/chef-solo
9.5. recipeを実行します。
cd /ngs/ngs_recipes
sudo chef-solo -c solo.rb -j ./localhost.json
10. recipe実行が終わればツールインストールが終わったので、Ubuntuから抜けます。
exit
exit
11. Dockerイメージを保存します。
sudo docker commit chef t.oginogin/ngs
12. 保存したイメージからコンテナを起動します。
sudo docker run -it --name ngs -v /data/ngs:/ngs t.oginogin/ngs /bin/bash
13. セットアップしたユーザーに切り替えます。
su - ubuntu
14. 各ツールが使えるようになっているか確認します。
bwa
bowtie
bowtie2
samtools
vicuna-omp-v1.0