docker

リファレンス 

オフィシャル

Dockerfile の見直す時に参考にする場所

Dockerfile のベストプラクティス その 1 ) 下記以外にもあるが私が忘れやすいポイントだけ

  • .dockerignore ファイルを使う
  • レイヤの数を最小に
  • 複数行の引数 <= 引数はアルファベット順に
  • 構築キャッシュ <= docker build で –no-cache=true とすると既存キャッシュを使わない
  • CMD <= 常に CMD [“executable”, “param1”, “param2”…] のような形式で使うべきです。
  • WORKDIR <= 明確さと信頼性のため、常に WORKDIR からの絶対パスを使うべきです。
  • Distroless が使えないか検討する

その 2

  • LABEL <= ロジェクト内でのイメージ管理をしやすくしたり、ライセンス情報の記録や自動化の助けとするなど、さまざまな目的があります。

参考

マルチステージビルドの利用
現実に効果的な Dockerfile を書くためには、
いつもながらトリッキーなシェルのテクニックや、
レイヤーができる限り小さくなるようなロジックを考えたりすることが必要でした。
つまり各レイヤーは、それ以前のレイヤーから受け継ぐべき生成物のみを持ち、
他のものは一切持たないようにすることが必要であったわけです。
本来 2 つあるRUNコマンドを Bash の&&オペレーターによって連結しています。
これを行うことで、イメージ内に不要なレイヤーが生成されることを防いでいます。
ただこれでは間違いを起こしやすく、保守もやりづらくなります。

保守がやりづらくなる、という認識は docker にもあるようだ。