業界・業務から探す
導入目的・課題から探す
データ・AIについて学ぶ
News
Hakkyについて
ウェビナーコラム
◆トップ【Hakkyの社内Wiki】Strapi
AI

執筆者:Handbook編集部

Dockerイメージの軽量化

はじめに

Docker を使用していると、以下の課題が発生することがあります。

  • イメージのサイズを最適化したい。
  • ベース・イメージが重いのでキャッシュしておきたい。
  • ビルドに時間がかかるのでキャッシュをできる限り賢く使って再利用したい。
  • 高速化だけでなく、外部への無駄な通信を抑えて GitHub や API のリクエスト負荷を下げたい。

上記を解決することで、Docker のビルドをできる限り早くできる可能性があります。

その手段を以下に記載していきます。

Docker イメージサイズの最適化

Docker イメージのサイズが大きくなると運用環境や開発環境でイメージのやり取りを繰り返す場合には、膨大な待ち時間が発生することになります。また、ネットワーク帯域も無駄に消費します。

ここでは、簡単にできるイメージサイズのダウンサイジングを示します。

コマンドをまとめる

各コマンドをすべてひとつの RUN にまとめることで一連のコマンドで発生した履歴も1つになります。そして、中間イメージが減る分だけ容量消費も抑えられることになります。


FROM node:12-slim

WORKDIR /tmp

RUN wget https://download.java.net/java/GA/jdk12.0.2/e482c34c86bd4bf8b56c0b35558996b9/10/GPL/openjdk-12.0.2_linux-x64_bin.tar.gz \
    && tar -zxvf ./openjdk-12.0.2_linux-x64_bin.tar.gz \
    && chown node:node -R /tmp/jdk-12.0.2/ \
    && apt-get update -y \
    && apt-get upgrade -y

一時ファイルを削除する

一時ファイルを削除するだけでもサイズ減となります。以下のように、rm -f ./openjdk-12.0.2_linux-x64_bin.tar.gz を追加して一時ファイルを削除しています。


FROM alpine

WORKDIR /tmp

RUN wget https://download.java.net/java/GA/jdk12.0.2/e482c34c86bd4bf8b56c0b35558996b9/10/GPL/openjdk-12.0.2_linux-x64_bin.tar.gz \
    && tar -zxvf ./openjdk-12.0.2_linux-x64_bin.tar.gz \
    && chown postgres:postgres -R /tmp/jdk-12.0.2/ \
    && rm -f ./openjdk-12.0.2_linux-x64_bin.tar.gz

パッケージマネージャのキャッシュを削除

パッケージマネージャのキャッシュを削除することで容量減に繋がります。以下では、apt-get clean -y でキャッシュを削除しています。


FROM node:12-slim as base

WORKDIR /tmp

RUN wget https://download.java.net/java/GA/jdk12.0.2/e482c34c86bd4bf8b56c0b35558996b9/10/GPL/openjdk-12.0.2_linux-x64_bin.tar.gz \
    && tar -zxvf ./openjdk-12.0.2_linux-x64_bin.tar.gz \
    && chown node:node -R /tmp/jdk-12.0.2/

FROM node:12-slim

COPY --from=base /tmp/jdk-12.0.2 /tmp/jdk-12.0.2

RUN apt-get update -y \
    && apt-get upgrade -y \
    && apt-get autoremove -y \
    && apt-get clean -y \
    && rm -rf /var/lib/apt/lists/*

スリムなベースイメージを使う

スリムなベースイメージを使うことも効果があります。例えば、ベースイメージに Debian 系ではなく、超軽量な Alpine Linux を使用することで劇的にサイズ減が図れます。


FROM node:12-alpine as base

WORKDIR /tmp

RUN wget https://download.java.net/java/GA/jdk12.0.2/e482c34c86bd4bf8b56c0b35558996b9/10/GPL/openjdk-12.0.2_linux-x64_bin.tar.gz \
    && tar -zxvf ./openjdk-12.0.2_linux-x64_bin.tar.gz \
    && chown node:node -R /tmp/jdk-12.0.2/

FROM node:12-alpine

COPY --from=base /tmp/jdk-12.0.2 /tmp/jdk-12.0.2

RUN apk update \
    && apk upgrade \
    && rm -rf /var/cache/apk/*

参考

info
備考

Hakky ではエンジニアを募集中です!まずは話してみたいなどでも構いませんので、ぜひお気軽に採用ページからお問い合わせくださいませ。

2025年06月02日に最終更新
読み込み中...