docker-slim を触ってみた¶
docker-slim 概要¶
docker-slim(SlimToolkit)は Docker コンテナイメージのサイズを削減するツールだ。README によると、イメージを最大 1/30 のサイズにできる。次の例では archlinux の image にslimを実行し、curlを実行できるイメージを 467MB から 17.4MB まで縮小している。
install¶
brew でインストールできる。
usage¶
各サブコマンドの説明は、SlimToolkit の README の COMMANDSによる。
- xray: イメージの Dockerfile の「リバースエンジニアリング」を含め、対象のコンテナイメージを静的分析する。コンテナイメージの中身と肥大化の原因を知りたい場合に使用する。
- lint: Dockerfiles のコンテナ命令を分析する (Docker イメージのサポートは WIP である)。
- build: コンテナイメージを分析、プロファイリング、および最適化し、サポートされているセキュリティプロファイルを生成する。最も一般的なコマンドである。
- registry: レジストリを操作する。
- profile: 基本的なコンテナイメージ分析と動的コンテナ分析をするが、最適化されたイメージは生成しない。
- run: 1 つまたは複数のコンテナを実行するためのコマンド。ただし 2023 年 5 月時点の README では、docker run と同様に単一のコンテナだけを実行するとされている。
- version: バージョン情報を表示する。
- update:
slimを最新バージョンに更新する。 - help: 使用可能なコマンドとグローバルフラグを表示する
実際に触ってみた¶
Python3 の FastAPI を使った Docker image に対してslimコマンドを実行してみた。1.2GB あったイメージサイズが 40MB まで小さくなったが、元のイメージで動いていたアプリケーションがエラーで立ち上がらなくなった。http-probeあたりが怪しいと思ったが解消はできなかった。 運用フェーズで利用するには、slim buildで作ったイメージを十分にテストする必要があると感じた。