Dockerfile作成時、キャッシュをうまく使う
はじめに
本記事では、Dockerfile作成時にキャッシュをうまく使う方法をアウトプットします。
Dockerマスターになりたいので、誤りがあればご指導ください。(他力本願かて)
Dockerfileについては、以下も参照ください。
準備
FROM ubuntu:latest
RUN apt-get update
RUN apt-get install <パッケージ>
CMD ["bin/bash"]
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の書き方と使い方
明日も頑張ります!
Author And Source
この問題について(Dockerfile作成時、キャッシュをうまく使う), 我々は、より多くの情報をここで見つけました https://qiita.com/mkato1013/items/3d91276107e5321b075d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .