大規模なDockerイメージの管理は時間のかかる課題であり、ビルドの待ち時間が長くなったり、ストレージ使用量が懸念されたりすることも少なくありません。Dockerfileを慎重に構成しても、最適なイメージサイズを実現するのは難しいと感じることがあります。しかし、SlimToolkit(旧称DockerSlim)を発見したことで、この状況は劇的に変わりました。
この革新的なツールは、Docker イメージを徹底的に分析し、実行時に必要な重要なファイルと依存関係を正確に特定し、不要な要素を排除します。
SlimToolkit を使用した Docker イメージの最適化
SlimToolkitは、アプリケーションコードやDockerfilesを変更することなく、Dockerイメージの最適化を効率化するように設計されたオープンソースソリューションです。最適化プロセスを自動化することで、パッケージのクリーンアップやビルドステージの再構築といった手間のかかる手順が不要になります。
SlimToolkit を Docker イメージ上で実行すると、実行中にコンテナを監視し、アプリケーションがどのファイル、ライブラリ、依存関係とやり取りするかを動的に分析します。この情報を使用して、必要なコンポーネントのみを含む新しいイメージを作成し、元のイメージは安全かつ容易に元に戻せるように保存します。
SlimToolkitは、Node.js、Python、Java、Goなど、様々なプログラミング環境と互換性があるため、DockerやLinuxの高度な専門知識がなくても利用できます。既存のワークフローにシームレスに統合することで、悪用される可能性のある不要なツールやシェルを削除し、コンテナのセキュリティを強化します。さらに、イメージサイズが小さいため、ダウンロード速度が速く、起動が高速化され、リソース消費が削減されるため、CI/CDパイプラインに大きなメリットをもたらします。
SlimToolkitを使い始める
SlimToolkitを使用する最も簡単な方法はDockerを使用することです。これにより、ローカルインストールが不要になります。Dockerが動作していれば、すぐにSlimToolkitを使い始めることができます。
まず、以下のコマンドを実行して、公式の SlimToolkit イメージを取得します。
docker pull dslim/slim

SlimToolkitを実行するには、Dockerソケット( )をマウントする必要があります/var/run/docker.sock。これにより、コンテナがローカルのDockerエンジンと通信してイメージ分析と最適化を実行できるようになります。信頼できる公式イメージのみを使用してください。
SlimToolkit を使用して Docker イメージのサイズを最小化する
最適化プロセスを説明するために、標準的なNginxイメージを縮小してみましょう。まずは最新の公式Nginxイメージを取得します。
docker pull nginx:latest

Nginxのような一般的なアプリケーションでは、ビルドコマンドを直接実行できます。SlimToolkitはコンテナで使用されているファイルを検証し、不要なファイルを削除します。
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock dslim/slim build --target nginx:latest --tag nginx-slim:latest

PythonやRubyなど、一部のプログラミング言語では、従来のプローブではすぐには有効化されない依存関係が存在する場合があることにご注意ください。必要に応じて、ignore.txtのようなファイルを作成し、保持するディレクトリを指定する/usr/local/lib/python3.11ことで、SlimToolkitが重要なランタイム依存関係を削除しないようにすることができます。
保存ルールのボリュームマウントを使用してコマンドを実行するには、次のコマンドを使用します。
-v "$(pwd)":/target --preserve-path-file /target/ignore.txt
サイズ縮小の評価: オリジナル画像と縮小画像
最適化プロセスが完了すると、SlimToolkitは新しくスリム化された画像をローカルに保存します。次のコマンドを使用して、元のバージョンと最適化されたバージョンのサイズの違いを比較できます。
docker images
通常、サイズが大幅に縮小されていることに気付くでしょう。

最後に、次のコマンドを実行して、新しく最適化されたイメージが期待どおりに機能することを確認します。
docker run -it -p 8080:80 nginx-slim:latest

ブラウザでhttp://localhost:8080に移動すると、大幅に小さくなったコンテナ フットプリントから提供される、デフォルトの Nginx ウェルカム ページが表示されます。

SlimToolkitの必須コマンド
SlimToolkitは、Dockerイメージの分析と最適化を容易にするために設計されたいくつかのコマンドを提供しています。その中でも特に役立つものをいくつかご紹介します。
| 指示 | 説明 |
|---|---|
| スリムな体型 | 重要なファイルと依存関係のみを保持することで Docker イメージを最適化し、イメージ サイズを効果的に削減します。 |
| スリムX線 | Docker イメージを分析して、ファイル、レイヤー、依存関係などの内容を表示します。 |
| 細い糸くず | ビルドの複雑さを回避するために、Dockerfile のエラーを検証します。 |
| スリムデバッグ | スリム化された Docker イメージから生成された実行中のコンテナのデバッグを容易にします。 |
| スリムなプロファイル | 分析のために、Docker イメージのサイズとパフォーマンスに関する情報を含む JSON レポートを収集して出力します。 |
| スリムマージ | 2 つの Docker イメージを 1 つの統合イメージにマージできます。 |
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock dslim/slim slim help

考慮事項と制限事項
SlimToolkit は Docker イメージのサイズを効果的に最小限に抑えますが、いくつかの制限事項に留意することが重要です。
- 大きな画像を最適化すると追加の時間が必要になる場合があるため、それに応じて計画を立てることをお勧めします。
- SlimToolkit は動的解析に依存しているため、ビルド中にトリガーされない場合、必要な依存関係を誤って冗長であると判断する可能性があります。スリム化されたイメージの包括的なテストが不可欠です。
bashスペースを節約するため、や などのユーティリティが削除される可能性がありますcurl。本番環境コンテナ内でのトラブルシューティングにこれらのユーティリティが必要な場合は、必ず保持期間を指定してください。
結論
SlimToolkitを開発ワークフローに組み込むことで、デプロイ速度の向上、安定したパフォーマンスの確保、コンテナの肥大化抑制を実現できます。これにより、元のビルドを維持しながら、よりクリーンでメンテナンス性の高いDockerイメージを作成できるようになります。さらに、効果的なDockerクリーンアップ手法を採用することで、コンテナ管理戦略の継続的な効率化に貢献します。
コメントを残す