LoginSignup
5
2

More than 5 years have passed since last update.

特定のR/BioconductorのパッケージをインストールしたDockerイメージを作成してみる

Last updated at Posted at 2018-06-11

この記事の概要

  • 特定のR/BioconductorのパッケージをインストールしたDockerイメージを作成する記事です。
  • 例としてBioconductorのパッケージ sleuth をインストールしたイメージを作成します。

Dockerfileを置くGitHubのリポジトリの作成

Dockerfile専用のリポジトリDockerfilesを作成

Dockerfileの作成

作業用ディレクトリの準備

$ mkdir Dockerfiles
$ cd Dockerfiles
$ mkdir sleuth
$ cd sleuth

上記のディレクトリに以下のDockerfileを作成。
BioconductorのパッケージをbiocLiteでインストール。

Dockerfile
FROM bioconductor/release_base2:R3.5.0_Bioc3.7
MAINTAINER hoge <hoge@gmail.com>

RUN R -e 'source("http://bioconductor.org/biocLite.R"); \
biocLite("devtools", ask=F); \
biocLite("getopt", ask=F); \
biocLite("remotes", ask=F); \
biocLite("pachterlab/sleuth", ask=F); \
biocLite("grimbough/biomaRt", ask=F)'

RUN mkdir /data

上記のDockerfileからイメージdocker-username/sleuthを作成
docker-usernameはDocker Hubに登録したID

$ docker build -t docker-username/sleuth .

イメージ作成が失敗したら、Dockerfileを修正してやり直し

作成したイメージが動くかを試す

$ docker run --rm -it docker-username/sleuth /bin/bash
# R
R version 3.5.0 (2018-04-23) -- "Joy in Playing"
(中略)
> library("sleuth")
(正常にパッケージがロードできることを確認)
> sessionInfo()
R version 3.5.0 (2018-04-23)
(中略)
other attached packages:
[1] sleuth_0.30.0        BiocInstaller_1.30.0
(中略)
# exit

DockerfileをGitHubへコミット

Dockerfileを格納したディレクトリsleuthの上位ディレクトリDockerfilesをコミット

$ cd Dockerfiles
$ echo "# Dockerfiles" >> README.md
$ git init
$ git add .
$ git commit -m "first commit”
$ git remote add origin git@github.com:username/Dockerfiles.git
$ git push -u origin master

コミット後のリポジトリはこのような感じです

DockerHubのリポジトリの作成しイメージを登録

GitHubのリポジトリに置いたDockerfileを参照

  • DockerHubにログイン
  • Create -> Create Automated Build -> Create Auto-build Github
  • Dockerfileを格納したリポジトリを選択
  • Repository Name は作成したいイメージ名 -> Create
  • Build Settings タブ
    • When active, builds will happen automatically on pushes. のチェックを外す
    • Dockerfile LocationはDockerfileを置いたディレクトリを指定/sleuth
    • Docker Tag Nameにイメージのバージョン(メインパッケージの)を指定0.30.0
    • Save Changesをクリック
    • Triggerをクリックするとイメージがビルドされる
  • Build Details タブ
    • Successになればビルドが完了

Docker Hubからイメージをダウンロード

# テストでローカルに作成したイメージを先に削除
$ docker rmi youyuh48/sleuth
$ docker pull youyuh48/sleuth:0.30.0

作成したコンテナ内でRのスクリプトを動かす

  • -vでホストのカレントディレクトリがコンテナ内の/dataからアクセスできる
  • カレントディレクトリ内のRのスクリプトhoge.Rを実行
  • スクリプトの引数に入出力ファイルのパスを/data/xxxのように渡す
  • スクリプトの出力ファイルoutput.txtがホストのカレントディレクトリにできる
$ docker run --rm -it -v `pwd`:/data \
 youyuh48/sleuth:0.30.0 \
 Rscript /data/hoge.R /data/input.txt /data/output.txt

参考

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2