Instana ベースイメージを使用した Docker での.NET トレースの設定
Instana .NET のベースイメージ(トレースエージェントが組み込まれているもの)を使用することで、コンテナ化された.NET アプリケーションにおけるトレース設定を簡素化できます。
Instana .NET ベースイメージは、Microsoftの公式.NET ランタイムイメージをベースにした、あらかじめ設定済みの Docker イメージです。 これらには Instana トレースエージェントが含まれており、計測ツールはあらかじめインストールおよび設定済みの状態で提供されます。
手動での設定については、 Docker の「.NET のトレースを手動で設定する 」をご覧ください。
主な機能
Instana .NET のベースイメージには、以下のものが含まれます:
- プリインストール済み Instana .NET Core Tracer
- あらかじめ設定済みのプロファイラ環境変数
- マルチアーキテクチャ対応( amd64 および arm64 )
- 複数のOSバリエーション( Alpine、 Ubuntu Noble、および Ubuntu Resolute)
- .NET 10.0 実行時サポート
- ゼロコードでの計測対応済み
前提条件
Instana .NET のベースイメージを使用する前に、以下の前提条件が満たされていることを確認してください
- Docker お使いのシステムにインストールされ、実行されています。
- Instana のエージェントキーとエンドポイント URL をご用意ください。
.NET のトレースにベース画像を使用する
コンテナ化されたアプリケーションで Instana .NET のベースイメージを使用するには、以下の手順を実行してください
- 用途に応じて、適切なベースイメージのバリエーションを選択してください。 オプションについては、「利用可能な画像バリエーション」 をご覧ください。
- Instana ベースイメージを使用するように Dockerfile を更新してください:
FROM artifact-public.instana.io/dotnet-tracers/dotnet-runtime-10.0-{variant}-{architecture}:{version}{variant} および {architecture} を、お使いの環境に適した値に置き換えてください。 {version} タグを使用する場合は、 を使用して
latest最新の画像バージョンを取得するか、特定のバージョン(例:1.319.7)を指定して特定のリリースに固定してください。 詳細については、 「アーキテクチャのサポート 」および「 イメージの命名規則 」の各セクションを参照してください。
アプリケーションは、 Instana のトレース機能が有効な状態で実行され、トレースデータが自動的に Instana に送信されます。
例 1: シンプルな ASP.NET Core アプリケーション
次の例は、 Instana ベースイメージを使用した、 ASP.NET Core の簡単なアプリケーションを示しています
Dockerfile:
# Use Instana base image with specific version
FROM artifact-public.instana.io/dotnet-tracers/dotnet-runtime-10.0-alpine-amd64:1.319.7
# Copy published application
COPY ./publish /app
# Set entrypoint
ENTRYPOINT ["dotnet", "MyApp.dll"]
ビルドして実行:
# Build your application
dotnet publish -c Release -o ./publish
# Build Docker image
docker build -t myapp:latest .
# Run with Instana configuration
docker run -d \
-e INSTANA_AGENT_KEY="your-instana-agent-key" \
-e INSTANA_ENDPOINT_URL="serverless-end-point-url" \
-e INSTANA_SERVICE_NAME=my-service \
-p 8080:8080 \
myapp:latest
例 2:SDK を使用した多段階ビルド
以下の例は、多段階の Dockerfile を示しています:
Dockerfile:
# Build stage
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
WORKDIR /src
COPY ["MyApp.csproj", "./"]
RUN dotnet restore
COPY . .
RUN dotnet publish -c Release -o /app/publish
# Runtime stage with Instana (using specific version)
FROM artifact-public.instana.io/dotnet-tracers/dotnet-runtime-10.0-noble-arm64:1.319.7
# Or use latest tag to get the most recent version
# FROM artifact-public.instana.io/dotnet-tracers/dotnet-runtime-10.0-noble-arm64:latest
WORKDIR /app
COPY --from=build /app/publish .
ENTRYPOINT ["dotnet", "MyApp.dll"]
ビルドして実行:
# Build Docker image (this also builds your application)
docker build -t myapp:latest .
# Run with Instana configuration
docker run -d \
-e INSTANA_AGENT_KEY="your-instana-agent-key" \
-e INSTANA_ENDPOINT_URL="serverless-end-point-url" \
-e INSTANA_SERVICE_NAME=my-service \
-p 8080:8080 \
myapp:latest
例 3:複数のサービスを含む ` Docker Compose `
次の例は、 Docker Compose を使用して、 Instana のトレース機能を備えた複数のサービスを実行する方法を示しています
docker-compose.yml:
version: '3.8'
services:
api-service:
build:
context: ./api
dockerfile: Dockerfile
image: myapp-api:latest
environment:
- INSTANA_ENDPOINT_URL=serverless-end-point-url
- INSTANA_AGENT_KEY=your-instana-agent-key
- INSTANA_SERVICE_NAME=api-service
ports:
- "8080:8080"
worker-service:
build:
context: ./worker
dockerfile: Dockerfile
image: myapp-worker:latest
environment:
- INSTANA_ENDPOINT_URL=serverless-end-point-url
- INSTANA_AGENT_KEY=your-instana-agent-key
- INSTANA_SERVICE_NAME=worker-service
サービスの開始:
docker-compose up -d
設定値:
設定ファイル内の以下の値を置き換えてください:
your-instana-agent-key: Instana のエージェントキーserverless-end-point-url: Instana のエンドポイント URLmy-serviceまたはサービス名:あなたのサービス名
Instana や.NET のベースイメージを使う理由
ベースイメージがない場合は、次の操作を行う必要があります:
- Dockerfile内で Instana や NuGet のパッケージを手動でダウンロードする
- CLR プロファイラ用の複雑な環境変数を設定する
- アーキテクチャ固有のプロファイラバイナリの取り扱い( amd64 対 arm64 )
- Alpine (musl-libc)と Ubuntu (glibc)の異なるプロファイラビルドを管理する
- この設定を複数のマイクロサービスに適用する
Instana .NET のベースイメージを使用すれば、設定済みのイメージをそのまま利用できます。
ベース画像の詳細
ニーズに応じて、3種類のベース画像から選択できます。
利用可能な画像バリエーション
以下の表は、利用可能な Instana .NET のベースイメージをまとめたものです:
| 異形体 | 基本イメージ | C ライブラリー | ユース・ケース | サイズ |
|---|---|---|---|---|
| Alpine | mcr.microsoft.com/dotnet/aspnet:10.0-alpine3.23 |
musl-libc | 最小限のコンテナ、サイズが最適化されている | 110 MB |
| Noble | mcr.microsoft.com/dotnet/aspnet:10.0-noble |
glibc | Ubuntu 24.04 LTS(ノーブル・ナンバット) | 220 MB |
| 断固たる | mcr.microsoft.com/dotnet/aspnet:10.0-resolute |
glibc | Ubuntu 25.04 (断固たるリングテイル) | 220 MB |
アーキテクチャのサポート
各バリアントは以下をサポートしています:
- amd64 ( x86_64 ): 標準的なIntelまたはAMDプロセッサ
- arm64 ( aarch64 ): ARMプロセッサ(Apple Silicon、 AWS Graviton、およびその他のプロセッサ)
画像の命名規則
画像名は次の形式に従います:
{registry}/dotnet-runtime-10.0-{variant}-{architecture}:{version}
バージョンタグのオプション:
- を使用して
latest、最新の画像バージョンを自動的に取得します 1.319.7特定のリリースに固定するには、特定のバージョン番号(例:)を使用してください
特定のバージョンを用いた例:
artifact-public.instana.io/dotnet-tracers/dotnet-runtime-10.0-alpine-amd64:1.319.7artifact-public.instana.io/dotnet-tracers/dotnet-runtime-10.0-noble-arm64:1.319.7artifact-public.instana.io/dotnet-tracers/dotnet-runtime-10.0-resolute-amd64:1.319.7
「latest」タグが付いた例:
artifact-public.instana.io/dotnet-tracers/dotnet-runtime-10.0-alpine-amd64:latestartifact-public.instana.io/dotnet-tracers/dotnet-runtime-10.0-noble-arm64:latestartifact-public.instana.io/dotnet-tracers/dotnet-runtime-10.0-resolute-amd64:latest
ディレクトリー構造
ベースイメージには、以下のディレクトリ構造が含まれています:
/opt/instana/
├── lib/
│ └── Instana.Tracing.Core.dll # Managed tracer library
└── profiler/
├── CoreProfiler.so # Native profiler (architecture-specific)
└── instrumentation.json # Instrumentation configuration
あらかじめ設定済みの環境変数
すべてのベースイメージには、以下の事前設定済みの環境変数が含まれています:
| 変数 | 値 | 目的 |
|---|---|---|
| CORECLR_ENABLE_PROFILING | 1 |
CLRのプロファイリングを有効にします |
| CORECLR_PROFILER | {CF0D821E-299B-5307-A3D8-B283C03916DD} |
Instana プロファイラー GUID |
| CORECLR_PROFILER_PATH | /opt/instana/profiler/CoreProfiler.so | ネイティブプロファイラのパス |
| DOTNET_STARTUP_HOOKS | /opt/instana/lib/Instana.Tracing.Core.dll | 管理対象トレーサーの起動フック |
メリット
ベースイメージを使用すると、手動でのセットアップに比べて大きな利点があります:
- 手動設定は一切不要: NuGet パッケージのインストールや環境変数の設定は不要です
- 一貫性のあるセットアップ:すべての環境で同一の設定
- エラーの削減:よくある設定ミスを解消します
- 導入の迅速化:事前設定済みのイメージにより、コンテナの起動が高速化されます
- マルチアーキテクチャ対応:1つのDockerfileで異なるCPUアーキテクチャに対応
- メンテナンスの簡素化: Instana による一元的なアップデート管理