Docker on CoreOS on Mac

- Docker

国内版Biohackathon(BH14.14)1日目。色々話しあった結果、Dockerチームとして活動することに。これまでローカルに動かしてきた解析スクリプト(レシピ)をDockerfileとして記述していこうかということで。まずは動かし方を。

[shell] brew tap phinze/homebrew-cask brew install brew-cask -v brew cask install virtualbox -v brew cask install vagrant -v git clone https://github.com/coreos/coreos-vagrant cd coreos-vagrant vagrant up && vagrant ssh [/shell] 起動したcoreos上で [shell] coreos> docker run -it inutano/cmatrix [/shell] と実行すると、ターミナルがThe Matrixにw。

一度、落として、Vagrantfileを編集。 最後から4行目(行末にendが3回出てくるところの上)に

config.vm.network "forwarded_port", guest:443, host:4430

と書き加えて [shell] vagrant reload && vagrant ssh [/shell] でcoreosを再起動して [shell] coreos> docker run -d -p 443:8888 -e "PASSWORD=hoge" ipython/scipyserver [/shell] でscipyserverを動かして、https://localhost:4430/を叩きに行くと…。

ファイルのsyncに関しては、Vagrantfileの

  # Uncomment below to enable NFS for sharing the host machine into the coreos-vagrant VM.
      config.vm.synced_folder "./share", "/home/core/share", id: "core", :nfs => true, :mount_options => ['nolock,vers=3,udp']

の部分をuncommentしてshareするdirectoryを指定することでファイルのsyncができる模様。

一番単純な例は、ubuntuのbashを起動すること。以下のように。 [shell] coreos> docker run -it ubuntu bash [/shell]

それを応用してなにか実例をということで考えたのはhmmerのプログラム群。それをインストールして実行するものでとりあえずはデータベースを利用しないでも実行できるものとしてhmmemitを実行するDockerfileをこさえてみた(bonohu/hmmemit)。

#Docker container for hmmemit in hmmer package
FROM debian
MAINTAINER Hidemasa Bono, bonohu@gmail.com
# File add
ADD Sod_Cu.hmm Sod_Cu.hmm
# Install packages
RUN apt-get update && 
    apt-get install -y hmmer &&
    rm -rf /var/lib/apt/lists/*
CMD ["hmmemit", "Sod_Cu.hmm"]

引数の指定にハマり(上記の最後の行)、inutano先生に教えてもらったりしたがなんとか1日目に完成。ビルドならびにDocker Hubへのpushは以下のようにするとよいらしい。 [shell] coreos> docker build -t bonohu/hmmemit /home/core/share/hmmer coreos> docker login coreos> docker push bonohu/hmmemit [/shell] 連載記事「いまさら聞けないDocker入門」も参考に。pushしたDockerイメージの実行は上記と同じく。 [shell] coreos> docker run -it bonohu/hmmemit [/shell]


Written by bonohu in misc on 月 02 2月 2015.