Docker入門② -Dockerイメージ ハンズオン-

Docker入門② -Dockerイメージ ハンズオン-

はじめに

前回はコンテナ技術が利用される背景に触れ、Dockerコンテナの特徴や、実際にコンテナをデプロイする方法について紹介した。今回は、Dockerイメージと自分で作成したコンテナのデプロイ方法について紹介する。

Dockerイメージについて

Dockerイメージは、ファイルシステムの集合体で、複数の層で作られている。
例えば、前回の例では以下水色枠の部分が一つ一つの層になっている。
Docker02_01

つまり、コンテナはこれらの層が一つ一つが重なりあって、イメージとしてできている。上記の例では、Docker runで実行したいコンテナの層をrepositoryなどから持ってきているがすでに存在しているので、各層でAlready existsとなっている。

コンテナの層のでき方(履歴情報)を確認することもできる
$ docker history
<出力結果>
Docker02_02

ここまでDockerイメージについて紹介した。
次は実際にDocker イメージの設定ファイルであるDockerfileを作成し、イメージを立ち上げコンテナを実行してみよう!

Dockerfileについて

はじめにDockerfileの作成からコンテナができるまでの大まかな流れは以下の図のようになっている。
Docker02_03

まず、Dockerfileの書き方を紹介する。
Dockerfileは、シンプルなテキスト情報から成り立っている。具体的にDockerfileというテキストデータを以下のように記述する。(ここでdockerfileフォルダに移っているのは個人的な管理上のため)
Docker02_04

上図のDockerfileの書き方をまとめると以下のようになる。

FORM
 利用するDockerイメージを指定
 今回は、docker/whalesay:latestのイメージを指定(:latestはイメージに対するタグを指定しており、latestタグを指定)

RUN
 コマンド実行(FROMで呼び出したイメージに対する事項)
 今回は、Fortunesというコマンドに対し、インストールし更新を行う

CMD
 デーモン実行(コンテナの中で何を実行させるか)
 今回は、cowsayでクジラの絵を表現しつつ、fortunesメッセージを実行

他にも環境変数の設定やボリュームマウント、dockerファイル作成者情報などを指定することが可能である。
ここまでは単なるテキストデータだが、次のコマンドによりDockerイメージに作り替える。

Docker02_05

$ docker build -t docker-whale-test .
docker-whale-test 自分で指定したイメージ名
. カレントディレクトリ(今回はdockerfileフォルダ配下にDockerfileファイルを置いているのでカレントディレクトリを指定)

<実行結果>
Docker02_06

イメージに変わったことをdocker imagesにより確認
<出力結果>
Docker02_07

指定した名前でイメージが存在する。
ここまででDocker imageの作成が完了した。
Docker02_08

最後に、前回と同じようにdocker runコマンドを用いてコンテナを作成する。
$ docker run docker-whale-test
<出力結果>
Docker02_10

クジラが出現し、吹き出し部分にはfortunesのメッセージが出現する。

まとめ

今回はDockerイメージを紹介し、Dockerfileの作成、イメージ化及びコンテナ起動までを紹介した。