Dockerfileを作る手順と注意点と参考サイト

前回、docker runででnginxとphp-fpmを起動する手順をブログに書きました。
今回は、Docker初心者の私が、Dockerfileを使って基本的なイメージを作成した上で、コンテナを起動する手順をまとめておきます。

手順

大まかには下記手順で進めていきます。

  1. 手順を確立する
  2. Dockerfileを作成する
  3. イメージをビルドする
  4. docker runを実行する

1. 手順を確立する

まず、いきなりDockerfileを作りだすと失敗するので、下記を読んでからはじめると良さそうです。

上記サイトはとても参考になることが書かれていました。
というのもイメージのビルドにはやはり数十秒から数分かかりますので、自分がベストだという流れのイメージを持たないままDockerfileを作り出すと失敗します。
最初に、上記サイトにも書かれているとおりにdocker runでコンテナの中に入った上で、必要なパッケージを調べたり、依存するディレクトリやファイルを確認しておくのが良さそうです。

2. Dockerfileを作成する

先日作成したCentOSにPC1のpuppet-agentが含まれるDockerfileを作成した手順を例にします。
最初からpuppet-agentが含まれるCentOSのイメージがほしかったので作成しました。
※puppet-agentのダウンロード時間分、時間の短縮につながります。

$ vim Dockerfile
FROM centos:7
MAINTAINER inamuu "https://github.com/kzm0211/"

RUN rpm -U http://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm \
    && yum -y -q install puppet-agent \
    && rpm -e puppetlabs-release-pc1 \
    ;\
    yum clean all

CMD ["/bin/bash"]

FROMでベースになるイメージを指定します。
つぎに、MAINTAINERを指定します。ここはメールアドレスを書いたりする人もいるようです。
そして、実行するコマンドを記述します。
最後に、このプロセスが実行するコマンドを記載します。

ちなみに、yum clean allとかしているのは割りとDockerfileの常套手段で、少しでもイメージが小さくなるように不要なものは削除するのが好ましいようです。

3. イメージをビルドする

イメージをビルドします。
Dockerfileのあるディレクトリで下記コマンドを実施します。※最後に “.”があるのが注意点です。

$ docker build -t kzm0211/centos7-puppet-agent .
Sending build context to Docker daemon 6.656 kB
Step 1 : FROM nginx:latest
 ---> 01f818af747d
Step 2 : MAINTAINER inamuu
 ---> Running in 3a11f2cf6a1f
 ---> c3d117fb179f
Removing intermediate container 3a11f2cf6a1f
Step 3 : ADD var/www/html/ /var/www/html
 ---> a93bb651dc09
Removing intermediate container 6aa60a7ef484
Step 4 : ADD etc/nginx/ /etc/nginx/
 ---> eeccde5ed2e1
Removing intermediate container c0c1776af375
Successfully built eeccde5ed2e1

4. docker runを実行する

あとは、通常通りdocker runでビルドしたイメージを指定すればOKです。

$ docker run --rm --name centos7-test1 -dti kzm0211/centos7-puppet-agent  /bin/bash

※ –rm で終了したらコンテナが削除されて残骸が残らない
※ -d でデタッチドモード。コンテナに即座に入らないので、入ったり抜けたりするのが便利
※ –name でコンテナ名を指定しないとわけわからない名前が勝手に付与されるので、操作性が下がらないようにわかりやすい名前を指定する

おまけ

上記Dockerfileは、hub.docker.com で公開しています。
会社の人がhub.docker.comを参考にDockerfileを作ると良いと教えてくれたのでよく見るようにしています。
ここのサイトには、Dockerfileを公開するために鎬を削ってDockerfileのイメージを小さくするようにあの手この手が書いてあるのでとても参考になります。

あと、さらっと公式のリファレンス を読むと良さそうです。
これを見るだけで全然理解度が変わります。
そもそも日本語化されていて、むちゃくちゃ便利なリファレンスです。
私個人的には、いままでのどんな海外製品の中でもダントツにわかりやすく、きれいにまとめられているリファレンスだと思ってます。
それくらい良いリファレンスなのでブックマーク必須だと思います!

以上、Dockerfileを作る手順と注意点と参考サイトでした。
次回はdocker-composeを使ってWordPress環境を作る手順について書こうと思います。