Docker イメージのサイズを最適化する方法

Squash機能を利用する(1.13以降に追加された試験的な機能)

1. Docker Daemon プロセスを開始する前に、実験パラメータを true に設定します。docker
v20 バージョンは、/etc/docker/daemon.json以下を変更することで有効になります。

{
    
    
  "experimental": true
}

2. 作成した dockerfile は以前のものと変わりません
3. コンパイル時に--squashパラメータを追加します。

docker build --squash -t xxx:xxx  .

squash 機能は画像のサイズを圧縮し、画像の構成情報を保存しますが、この方法は実験的なものであるため、使用には注意が必要です。

より小さいベースイメージを使用する

  • システム イメージは、Ubuntu、CentOs、Alpine、scratch、buybox などを使用します。
  • 公式 Web サイトのイメージの多くはスリム バージョンを提供しています
    が、上記の方法の欠点は、基本イメージのサイズが小さいため、必要な依存関係やツールが不足している可能性があり、徐々に補完する必要があり、多大な作業がかかることです。 。

Dockerfile命令の最適化

命令のスプライシング

Dockerfile を定義する場合、RUN命令を複数回使用すると複数のイメージ レイヤーが生成され、イメージが肥大化します。複数の命令は 1 つに連結される必要がありますRUN(演算子 sum によって実装されます) &&/

命令の最適化

RUN コマンドで実行するとaptコマンド自体apkの構成オプションを使用して、イメージ レイヤーの数とイメージ サイズを削減できます。yum

  • 実行apt-get install -y中にオプションを追加すると--no-install-recommends、推奨される (必須ではない) 依存関係をインストールする必要がなくなります。また、実行中にapk addオプションを追加して--no-cache同じ効果を得ることができます。
  • 実行中にyum install -y、次のような複数のツールが同時にインストールされますyum install -y gcc gcc-c++ make
  • コンポーネントの取り付けとクリーニングは、次のように 1 つの命令で直列に接続する必要があります。apt-get install zip && rm -rf /var/cache/apk/*

エクスポートおよびインポートの手順を使用する

#  启动一个容器
docker run -d --name test test:2.0
# 利用export和import将容器导出变为镜像
docker export test | docker import - test:3.0

この方法でもイメージ サイズを効果的に削減できますが、イメージ ビルド情報が失われます。

おすすめ

転載: blog.csdn.net/Loiterer_Y/article/details/121928584