Dockerfile作成時、キャッシュをうまく使う


はじめに

本記事では、Dockerfile作成時にキャッシュをうまく使う方法をアウトプットします。
Dockerマスターになりたいので、誤りがあればご指導ください。(他力本願かて)

Dockerfileについては、以下も参照ください。

準備

FROM ubuntu:latest

RUN apt-get update
RUN apt-get install <パッケージ>

CMD ["bin/bash"]

とします。

FROMで、ベースになるimageを決定します。
今回は、ubuntuにします。

その後、Ubuntuでは、apt-getというコマンドでパッケージ管理します。

  • RUN apt-get updateでは、新しいパッケージリストを取得できます。
  • RUN apt-get install <パッケージ>で、パッケージをインストールできます。

キャッシュを利用する

RUN やりたいことをどんどん記述してしまうと、
その分layerが積まれていっぱいになります。
buildをする毎に、処理に時間がかかってしまいます。

つまり、まとめてRUNすれば、省エネすることができます。

FROM ubuntu:latest

RUN apt-get update
RUN apt-get install -y <パッケージ>

CMD ["bin/bash"]

これは、

FROM ubuntu:latest

RUN apt-get update && apt-get install -y <パッケージ>

CMD ["bin/bash"]

で、書くことができます。

パッケージは1つとは限らないので、\(バックスラッシュ)を使って、
より見やすく書くことができます。

FROM ubuntu:latest

RUN apt-get update && apt-get install -y \
    <パッケージ1> \
    <パッケージ2> \
    <パッケージ3>

CMD ["bin/bash"]

と書くことができます。

RUNの内容の変更点がなければ、
docker build .をしても、キャッシュを使って処理を早く終了することができます。

つまり、パッケージをインストールして、うまくいったものについては、
<パッケージ> \と、どんどん追加していくことが良いと考えられます。

RUN apt-get update && apt-get install -y \
    <パッケージ1> \
    <パッケージ2> \
    <パッケージ3>
RUN apt-get install -y <パッケージ4>

<パッケージ4>が問題なければ、

RUN apt-get update && apt-get install -y \
    <パッケージ1> \
    <パッケージ2> \
    <パッケージ3> \
    <パッケージ4>

と付け足していく。

これを繰り返し、
完成品ができれば、
締めくくりとして、RUNをひとまとめにして、「build」します。

パッケージについては、
私的に、さらに分かりやすい方が良いと思ったので、アルファベット順でも良いのかなと思います。

以上です。

終わりに

何事においてもデータ容量は、小さい方が良いと思います。
今回のように、キャッシュをうまく使い、省エネをしていきたいです。

私のような初学者の方々は、
Dockerを使いまくってデータ容量がすごいことになっていると、
よく耳にします。

何においても、プログラミングは可読性は大事なのですね。

以下今回の参考サイトです。
Dockerfile に apt, apt-get, source コマンドを書く時のTips
Dockerfile のベストプラクティス
Dockerfileの書き方と使い方

明日も頑張ります!