Dockerfile について

Docker は Dockerfile の内容に従ってイメージを作成することができます。 Dockerfile はテキストファイルであり、それはイメージの blue print とも言える存在です。 ファイルに作成したいイメージを構築する手順を書き、docker build コマンドを使うことでイメージを作ることができます。

Dockerfile の作成

Dockerfile で定義するイメージは emacs パッケージがインストールされた ubuntu とします。 以下のように ubuntu:14.04 のベースイメージでは emacs コマンドは使えません。

[root@localhost ~]# docker run -t -i ubuntu:14.04 /bin/bash
root@dbdd0c12ea49:/# emacs test
bash: emacs: command not found
root@dbdd0c12ea49:/# exit
exit

この ubuntu:14.04 に emacs をインストールする手順を Dockerfile に記載します。

まず、Dockerfile を置くディレクトリを新しく作ります。名前はなんでもいいですが、今回は emacs としました。 そこに "Dockerfile" というファイル名で Dockerfile を作成します。

[root@localhost ~]# mkdir emacs
[root@localhost ~]# cd emacs
[root@localhost emacs]# vi Dockerfile
[root@localhost emacs]# cat Dockerfile
FROM ubuntu:14.04
RUN apt-get update
RUN apt-get install -y emacs

詳しくは後ほど説明しますが、FROM でベースとなるイメージを指定し、RUN で発行するコマンドを上から順に書いていきます。 今回はパッケージを update してから、emacs をインストールしています。

これで Dockerfile の作成は完了です。

Dockerfile の build

先ほど作成した Dockerfile をビルドします。ビルドするには "docker build -t <イメージ名> <Dockerfileの場所>" とします。

[root@localhost emacs]# docker build -t xxxx/emacs ./
Sending build context to Docker daemon 3.584 kB
Sending build context to Docker daemon 
Step 0 : FROM ubuntu:14.04
 ---> 1357f421be38
Step 1 : RUN apt-get update
 ---> Running in 838fffc3d82f
Ign http://archive.ubuntu.com trusty InRelease
Ign http://archive.ubuntu.com trusty-updates InRelease
<...>
Step 2 : RUN apt-get install -y emacs
 ---> Running in aa0e95995051
Reading package lists...
Building dependency tree...
<...>
Successfully built d61cd66957a3

ビルドに成功したのでイメージを確認します。

[root@localhost emacs]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
xxxx/emacs          latest              d61cd66957a3        30 seconds ago      423.1 MB
<...>

新しく作成したイメージからコンテナを作成し、emacs コマンドを打ってみます。

[root@localhost emacs]# docker run -t -i xxxx/emacs /bin/bash
root@b7cc08151dbc:/# emacs hello
root@b7cc08151dbc:/# 

ubuntu:14.04 で使えなかった emacs コマンドが新しいイメージでは使えていることがわかりますね。