【基本編】Dockerfikeの書き方

どうも!めがとんです!
今回はDockerfileの書き方について紹介しようと思います。
興味がある方は最後まで読んでいただけると幸いです。

 

Dockerfileとは

Docker imageを作る上での設計図。
Dockerfileから作成する事で、コンテナの中身が把握しやすくなる。
Dockerfileを作成し下記のコマンドでimageを作成する。

$ docker build -t <name> <directory>

 

Dockerfileの書き方

Dockerfileは基本的に、3つのinstructionから構成されている
・FROM
・RUN
・CMD

まずはFROMから書き始める。

 

FROM ubuntu:latest

RUN touch test

CMD [“ls”]

 

この例で例えると、ubuntuというOSイメージをFROMで作成を行い、
Linuxのtouchコマンドを使えるようにする。
大体FROMにはOSを指定したり、他の人が作成したDocker imageを指定する事が多い。

RUNで指定した作業がLayerとして積み重なっていく。
但し、RUNを多用するとLayerが増えていき、
Dockerimageが重たくなるので注意が必要。

CMDはDockerfileの最後に記述する。
CMDで指定したコマンドが、containerを作成するときに実行される。
ここではlsコマンドが実行される。

 

RUNCMDの違いについて

端的にまとめると、RUNはLayerを作る。
CMDはLayerを作らない。
つまりCMDは、Dockerimageには反映されない。

Dockerimageに保存したい場合はRUNで記述し、
実行したい内容はCMDに記述するイメージになります。

 

Layer数を軽量化するために

Layerを作成するコマンドは三つある。

・RUN
・COPY
・ADD

 

実際の業務においてはRUNを主に使用し、パッケージを管理する事がメインになります。
パッケージを管理するコマンドが下記になります。

 

RUN apt-get update -新しいパッケージリストを取得

RUN apt-get install <package> -<package>をインストール

 

これを&&で繋げる事によって、一行でまとまりLayerが軽量化される。

 

RUN apt-get update && apt-get install test

 

今回は以上です。