Anúncio
Anúncio

Mais conteúdo relacionado

Similar a 20220602_Dockerイメージサイズの軽減について.pptx(20)

Anúncio

Último(20)

20220602_Dockerイメージサイズの軽減について.pptx

  1. Dockerイメージサイズ の軽減について 1/9
  2. Dockerイメージサイズを小さくするメ リット 2/9 ・イメージのbuild、pushやコンテナのbuildが早くなるので、 CI/CDに効果的 ・リポジトリからのイメージのコピーが早くなるため、 障害からの復旧が早まる
  3. Dockerイメージのサイズについて FROM node:12-alpine RUN apk add –no-cache python g++ make WORKDIR /app COPY . . RUN yarn install --production CMD ["node", "src/index.js"] / usr lib Dockerイメージ src app prod bin lang 3/9 Docker​イメージのサイズは、大まかにイメージレイヤの数と イメージ内のファイルシステムの容量で決まる Dockerfile内のコマンドが 多いほど大きい イメージ内のファイルが 多いほど大きい
  4. イメージレイヤ削減によるサイズ軽 減? 4/9 RUNコマンドを一つにまとめることで、イメージレイヤを減らすと イメージが軽くなる? 計35.92MB 今回のケースでは、イメージレイヤ数による差は見られなかった
  5. .dockerignore削減によるサイズ軽減 5/9 ビルドコンテキストに.dockerignoreを配置することで、 不要なファイルがイメージ内に含まれないようにする ビルドコンテキストのルートに配置し、 相対パスでファイル名を記載する。 記載されたファイル・ディレクトリは、 COPYやADDコマンドで無視される Volumeによるファイル同期は 問題なく行われる Ignore前の イメージサイズ ignore後の イメージサイズ
  6. Multi staging buildによるサイズ軽減 6/9 必要なファイルのみ抽出しつつイメージビルドを行うことで、 最終的なイメージサイズを小さくする コードのビルド(バイナリ化)と 実行を一度に行う場合 コードビルド コード実行
  7. / go alpine Builder Go+alpine app src 7/9 コードをビルドするイメージとコードを実行するイメージに 分割し、最終的なイメージを小さくする builderイメージ Multi staging buildによる担当分割 / alpine Runner alpine app src models middle ware datab ase binary go build runnerイメージ binary Builderから コピーしたバイナリ
  8. 8/9 コードの実行にのみ必要なファイルがイメージに残るため、 イメージサイズが大幅に小さくなる Multi staging buildによるサイズ変化 特に、Golangは実行ファイルがバイナリであるため、 高い効果が期待される Multi stagingなし Multi stagingあり
  9. Dockerイメージサイズを小さくするメ リット 9/9 ・.dockerignoreとmulti staging buildを組み合わせることで、 Dockerイメージの削減が見込める ・イメージレイヤの削減によるイメージ軽量化については要検証 ・goやjavascriptなど、コードのビルドが必要な場合は、 特にMulti staging buildによるサイズ軽減が見込める
Anúncio