Linux
 Computer >> コンピューター >  >> システム >> Linux

SlimToolkitでDockerイメージのサイズを削減しパフォーマンスを向上させる方法 – 実証済みの最適化ツール

大容量のDockerイメージのトラブルシューティングに時間を費やし、ビルドの完了を待ち続け、無駄なストレージを心配した経験はありませんか。Dockerfileをどれだけ慎重に設計しても、イメージがどうしても必要以上に重くなってしまう——そんな悩みを一変させてくれたのが、SlimToolkit(旧DockerSlim)です。

SlimToolkitはDockerイメージを解析し、実行時に実際に必要となるファイルや依存関係を特定して、それ以外をすべて削除します。この記事では、SlimToolkitの仕組みと、筆者が実際にイメージを軽量化した際の手順を詳しく解説します。

SlimToolkitがDockerイメージの最適化をシンプルにする

SlimToolkitは、アプリケーションコードやDockerfileを一切変更することなく、Dockerイメージのサイズを縮小できるオープンソースツールです。パッケージのクリーンアップやマルチステージビルドへの書き換えといった手間のかかる手動作業が不要になり、イメージの最適化を自動的に処理してくれます。

Dockerイメージに対してSlimToolkitを実行すると、コンテナの動作を監視する「動的解析」を行います。アプリケーションが実行中にアクセスするファイル・ライブラリ・依存関係を正確に追跡し、そのデータをもとに、必要なコンポーネントだけを含む最適化済みの新イメージを生成します。元のイメージは変更されないため、プロセスは安全で、いつでも元に戻せるのが魅力です。

SlimToolkitは既存のイメージに対してそのまま使え、Node.js、Python、Java、Goをサポートしています。高度なDockerやLinuxの知識も不要です。また、攻撃者に悪用される恐れのある未使用のツールやシェルを削除することで、コンテナのセキュリティ向上にもつながります。イメージが小さくなればダウンロードが速くなり、起動も速く、リソース消費も抑えられるため、CI/CDパイプラインにとって大きなメリットとなります。

Docker経由でSlimToolkitを使う準備

SlimToolkitの利用方法として最も手軽なのが、Docker経由で実行する方法です。ローカル環境へのインストールが不要で、Dockerさえインストール・起動していれば、すぐに使い始められます。

まず、以下のコマンドで公式のSlimToolkitイメージをダウンロードします。

docker pull dslim/slim
SlimToolkitでDockerイメージのサイズを削減しパフォーマンスを向上させる方法 – 実証済みの最適化ツール

SlimToolkitの実行には、Dockerソケット(/var/run/docker.sock)のマウントが必要です。これにより、コンテナがローカルのDockerエンジンと通信し、イメージの解析と最適化を行えるようになります。セキュリティのため、マウントするのは必ず信頼できる公式イメージにとどめてください。

SlimToolkitでDockerイメージのサイズを削減する

ここでは、最適化の流れを理解するために、標準的なNginxイメージをスリム化してみます。まず、公式の最新Nginxイメージをプルします。

docker pull nginx:latest
SlimToolkitでDockerイメージのサイズを削減しパフォーマンスを向上させる方法 – 実証済みの最適化ツール

Nginxのような標準的なアプリケーションであれば、buildコマンドを直接実行するだけでOKです。SlimToolkitがコンテナが実際に使用するファイルを検出し、不要なものを自動的に取り除きます。

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock dslim/slim build --target nginx:latest --tag nginx-slim:latest
SlimToolkitでDockerイメージのサイズを削減しパフォーマンスを向上させる方法 – 実証済みの最適化ツール

ただし、PythonやRubyなどの言語では、標準的なプローブでは即座に読み込まれない依存関係が存在する場合があります。そのようなケースでは、「ignore.txt」ファイルを作成し、保持したいフォルダ(例:「/usr/local/lib/python3.11」)を明示的に指定しましょう。これにより、実行に不可欠なランタイム依存関係が誤って削除されるのを防げます。

ボリュームマウントを指定してコマンドを実行すれば、独自の保持ルールを読み込ませることができます。

-v "$(pwd)":/target --preserve-path-file /target/ignore.txt

元のイメージとスリム化後のサイズ比較

処理が完了すると、SlimToolkitは最適化済みのイメージをローカルに保存します。以下のコマンドで、元のイメージとスリム化後のバージョンのサイズ差を比較してみましょう。

docker images

劇的なサイズ減少が確認できるはずです。

SlimToolkitでDockerイメージのサイズを削減しパフォーマンスを向上させる方法 – 実証済みの最適化ツール

最後に、新しい最適化イメージを実際に起動して、期待どおりに動作するか確認します。

docker run -it -p 8080:80 nginx-slim:latest
SlimToolkitでDockerイメージのサイズを削減しパフォーマンスを向上させる方法 – 実証済みの最適化ツール

ブラウザで https://localhost:8080 にアクセスすると、おなじみのNginxウェルカムページが表示されます。しかし、このページは大幅に小型化されたコンテナ上で動作しているのです。

SlimToolkitでDockerイメージのサイズを削減しパフォーマンスを向上させる方法 – 実証済みの最適化ツール

覚えておきたい主なコマンド

SlimToolkitには、Dockerイメージの解析と最適化に役立つ便利なコマンドが複数用意されています。特によく使うものをまとめました。

コマンド説明
slim build必要なファイルと依存関係のみを残してDockerイメージを最適化し、イメージサイズを削減します。
slim xrayDockerイメージを解析し、ファイル・レイヤー・依存関係など内部の構成を可視化します。
slim lintDockerfileのエラーをチェックし、ビルド時の問題を未然に防ぎます。
slim debugスリム化したイメージから作成した実行中コンテナをデバッグできます。
slim profileDockerイメージの情報を収集し、サイズやパフォーマンス分析用のJSONレポートを出力します。
slim merge2つの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のクリーンアップのベストプラクティスを採用すれば、長期にわたって効率的で整理されたコンテナ環境を維持できるでしょう。

  1. LinuxにMicrosoft TrueTypeフォントをインストールする方法【ディストリ別コマンドとISOからの抽出手順】

    世の中には何千種類ものフォントが存在しますが、Windowsの圧倒的なシェアの影響で、OSに同梱されているMicrosoft製フォントは事実上の標準として広く使われています。「Arial」「Times New Roman」「Impact」といったフォントは、多くのユーザーにとって標準的な存在です。そのため、Linuxを使っていても、Windowsユーザーとの間でドキュメントのやり取りや共同作業を行うなら、これらのフォントを利用できる環境を整えておく必要があります。 幸い、MicrosoftフォントをLinuxディストリビューションに導入するのは簡単です。この記事では、代表的な方法をいくつか紹

  2. Linuxのchownコマンドでファイル・ディレクトリの所有権を変更する方法

    Linuxシステムでは、すべてのファイルに「所有者」と「グループ所有者」が紐付けられています。適切な権限を持っていない場合、ファイルやディレクトリへのアクセスや編集は行えません。そんなときに役立つのが、所有者を変更できる「chown(change owner)」コマンドです。この記事では、chownコマンドの基本的な使い方から応用的なテクニックまで、具体例を交えてわかりやすく解説します。chownコマンドの基本構文chownコマンドは、以下の構文で使用します。sudo chown [新しい所有者]:[新しいグループ所有者] ファイル名ファイルの現在の権限を確認する所有者やグループを変更する前に