mecobalamin’s diary

人間万事塞翁が馬

JBrowseをDockerで動かす、その1、VMの作成とネットワーク設定

DockerのUbuntuにJBrowseをインストールし
Nginxを使ってローカルネットワークで
bamファイルを共有する
JBrowseはDockerの永続ボリュームである
Docker volume上にインストールする

メリットはなんだろう

コンテナ間でファイルの共有しつつ
そのファイルをローカルネットワークから参照するのに
ちょうどよい例題になりそうだったから試してみた、
というのが正直なところ
なんとなく応用が効きそう


手順は以下の通り

  1. Virtual Machine(VM)の作成とネットワーク設定(この記事)
  2. Docker Volumeの作成
  3. Dockerfileのbuild
  4. JBrowseのインストール
  5. Nginxの起動とJBrowseへのアクセス
  6. Bamファイルの登録
  7. イメージの作成

まずVirtual Machine(VM)の作成とネットワーク設定をする

JBrowseをインストール後に
BamファイルをJBrowseに登録するが
その時メモリ/ストレージを消費するようだ
デフォルトのメモリ/ストレージサイズだと失敗した
そこでメモリとストレージサイズを
デフォルトより大きくした
hogehogeというVMを作成する

$ docker-machine.exe create --driver virtualbox --virtualbox-disk-size "120000" --virtualbox-memory "16384" hogehoge

hogehogeは起動/シャットダウンにVMの名前をつける

$ docker-machine.exe start hogehoge
$ docker-machine.exe stop hogehoge

VMの名前がdefaultの場合だといらないのでやや面倒
既存のdefaultを消して新しくdefaultのVM
作り直すという手もあるが
この場合内部のimageも消えてしまう
(実際消えてしまいimageを復活できずに困った)

既存のVMを消して新規に作る場合は
以下のコマンドを使う

$ docker-machine.exe rm default 
$ docker-machine.exe create --driver virtualbox --virtualbox-disk-size "120000" --virtualbox-memory "16384" default

なおVMはwslから作る
VirtualBoxからも作成できるが
wslからアクセスする方法がわからなかった

次に作成したVMをローカルネットワーク上に公開するために
ポートフォワーディングの設定をする
こちらのサイトを参考にした
Dockerにubuntuをインストール後、nginxを入れてサイトを表示したい。|むく|note

VIrturalBoxの場合、使用するVM(hogehogeまたはdefault)を選択し
[設定] -> [ネットワーク]にあるアダプターから行う
いくつかアダプターのタブがあるが
NATに割り当てられているアダプターを使う

[高度]の[ポートフォワーディング]をクリックすると
[ポートフォワーディング ルール]というウィンドウが現れる
ウィンドウ右側のボタンでルールを追加し
ホストポートに"8000"、ゲストポートに"8080"を追加する
名前は任意で良さそう
f:id:mecobalamin:20201010200429p:plain

最後にホストOS(Windows10)とゲストOS(wsl)との間で
ファイルの遣り取りをするために
共有フォルダーの設定をする
詳しくはこの記事を参照してもらいたい
mecobalamin.hatenablog.com

VirtualBoxのdefaultのVMを選択する
[設定] -> [共有フォルダー]を選び
右のボタンで共有するフォルダーを追加する
Eドライブを追加する場合は
フォルダーのパスをe:\
フォルダー名をeとする
[自動マウント]と[永続化する]にチェックを入れる
f:id:mecobalamin:20201010200537p:plain

通常、windowsディレクトリは
wslの/mnt/にマウントされる
これをルート/にマウントするように変更する
そのために/etc/wsl.confに以下のように書き込んだ

[automount]
root = "/"

また$HOME/.profileのDOKER_CERT_PATHの行を
/mnt/cなのを/mntを除いて/cとする

ファイルの書き換えが終わったら
wslのウインドウを閉じて
Powershellからコマンドでwslを終了する

> wslconfig /t Ubuntu

wslからdockerを起動したときに
windowsディレクトリにアクセスできたら完了
例えば以下のコマンドをwslから実行する

$ docker run --rm -v /e/hoge:/tmp/fuga -it ubuntu /bin/bash

Dockerのubuntuの/tmp/fugaを見たときに
windowsのe:\hogeの内容が見えたら
フォルダの共有ができている


とりあえず前準備はここまで

続きます


以下に過去記事のリンク
mecobalamin.hatenablog.com
mecobalamin.hatenablog.com
mecobalamin.hatenablog.com

ゲノムブラウザのセッティング
www.ncbi.nlm.nih.gov