前回の記事にてひとまずdockerをインストールし、Docker HubのDockerイメージを取得・起動することができた。
今回は自分自身でオリジナルのDockerイメージを作成することとした。ruby開発環境の構築を想定して、Dockerfileを作成してみた。
作業は以下の記事を参考にして実施した。
いまさら聞けないDocker入門(3):Dockerfileとdocker buildコマンドでDockerイメージの作成 (1/2) - @IT
Dockerfileの書き方
Dockerfileの書き方は至って単純である。以下の記事が参考になる。
Dockerfileを作成
Dockerfileを作成する前にベースとするイメージを選出する必要がある。今回はruby開発環境ということで、rbenvをインストール済の環境である「polleverywhere/rbenv」をベースとさせていただいた。
このイメージのREADMEを見ると、rubyをインストール済イメージを作成する場合のDockerfileのサンプルが掲載されている。従って、これを参考にDockerfileを作成した。
FROM polleverywhere/rbenv MAINTAINER Yuhei Okazaki <y.2.okazaki@gmail.com> ENV RUBY_VERSION 2.1.3 RUN rm -rf $HOME/.rbenv/plugins/ruby-build \ && wget -O - https://github.com/sstephenson/ruby-build/archive/master.tar.gz \ | tar zxf - \ && mkdir -p $HOME/.rbenv/plugins \ && mv ruby-build-master $HOME/.rbenv/plugins/ruby-build RUN apt-get update -q \ && apt-get -q -y install curl autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev \ && rbenv install $RUBY_VERSION \ && rbenv global $RUBY_VERSION \ && apt-get purge -y -q curl autoconf bison build-essential libssl-dev zlib1g-dev \ && apt-get autoremove -y \ && rm -rf /var/lib/apt/lists RUN apt-get -q update \ && apt-get -q -y install git gcc vim-nox make \ && rm -rf /var/lib/apt/lists RUN gem install --no-ri --no-rdoc bundler RUN rbenv rehash
Dockerイメージの生成
以下のコマンドでイメージが生成される。(".(ドット)を忘れないように注意")
$ sudo docker build -t yuuu/ruby-dev . (省略)
Dockerイメージの起動
生成に成功したら早速起動してみる。指定したバージョンのRubyやGit, Vimがインストールされていることが確認できる。
$ sudo docker run -i -t yuuu/ruby-dev /bin/bash root@29c0f89dda08:/# ruby -v ruby 2.1.3p242 (2014-09-19 revision 47630) [x86_64-linux] root@29c0f89dda08:/# git --version git version 1.9.1 root@29c0f89dda08:/# gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.4-2ubuntu1~14.04' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04) root@29c0f89dda08:/# vim (VIMが起動する)