dotMemory 2026.1 Help

Docker コンテナー内のプロファイルアプリケーション

.NET アプリケーションが Docker コンテナー内で実行されている場合、dotMemory コマンドラインプロファイラーを使用してプロファイリングします。 プロファイラーをダウンロードしてプロファイリングセッションを開始するには、コンテナーシェルにアクセスできる必要があります。

  1. Docker を実行しているホストマシンにログインします。

  2. アプリケーションコンテナーと通信できるようにするには、その ID または名前を知る必要があります。 取得するには、次を実行します。

    docker ps

    出力例:

    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e58110265dd6 my-aspnet-app "dotnet MyAspNetApp.…" 22 hours ago Up 22 hours 0.0.0.0:5142->5142/tcp my-aspnet-app-container

    ここで、 e58110265dd6 はコンテナー ID で、 my-aspnet-app-container は名前です。

  3. Docker コンテナー内でシェルセッションを開始します。 sh/bin/bash など、イメージ OS に応じて異なるコマンドラインインタープリターを使用できます。

    docker exec -it {container_ID_or_name} sh

    例えば:

    docker exec -it my-aspnet-app-container sh
  4. コンテナー内で、dotMemory コマンドラインツールをダウンロードして、たとえば dotMemoryclt フォルダーに解凍します:

    apt-get update -y && apt-get install -y wget && \ wget -O dotMemoryclt.zip https://www.nuget.org/api/v2/package/JetBrains.dotMemory.Console.linux-x64 && \ apt-get install -y unzip && \ unzip dotMemoryclt.zip -d ./dotMemoryclt && \ chmod +x -R dotMemoryclt/*

    ここに:

    • apt は、Debian ベースのシステム用のパッケージマネージャーです。 OS が他のパッケージマネージャーを使用している場合は、 apt の代わりにそれを使用します。

    • JetBrains.dotMemory.Console.linux-x64 は、Linux x64 システムのパッケージ名です。 この名前は、ターゲットプラットフォームによって異なります。 ここ で、さまざまなプラットフォーム向けのパッケージ一覧を確認できます。

  5. プロファイリングするプロセスにアタッチする前に、プロセス ID を取得する必要があります。

    ps aux

    Linux ディストリビューションで ps コマンドが利用できない場合は、次のようにインストールします。

    apt-get update && apt-get install procps

    出力例:

    # ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 1.2 276055932 200960 ? Ssl Mar23 0:21 dotnet MyAspNetApp.dll --urls http://*:5142 root 914 0.0 0.0 2480 580 pts/0 Ss 05:33 0:00 sh root 2171 0.0 0.0 6756 2940 pts/0 R+ 12:55 0:00 ps aux
  6. プロセスをプロファイリングします。 例えば:

    • PID 1 のプロセスのスナップショットを即座に取得するには、次のようにします。

      ./dotMemoryclt/tools/dotmemory get-snapshot 1
    • PID 1 のプロセスにアタッチするには:

      ./dotMemoryclt/tools/dotmemory attach 1

      スナップショットを取得するには、stdin メッセージを使用します:

      ##dotMemory["get-snapshot"]

    コマンドラインツールの使用方法の詳細については、対応する トピックを参照してください。

  7. プロファイリングを停止して収集したデータを保存するには、 Ctrl+C を押します。

  8. コンテナーでシェルセッションを終了するには、 exit を実行します。

  9. ワークスペースファイルをホストマシンにコピーします。 これを行うには、ホストマシンで次のコマンドを実行します。

    docker cp {container_ID_or_name}:/{path_to_workspace_file} {path_to_folder_on_host_machine}

    例えば:

    docker cp my-aspnet-app-container:/app/[1]-dotnet.2023-03-24T16-10-18.136.dmw "/home/username/Documents/Workspaces"
  10. 収集したスナップショットを分析します

2026 年 6 月 12 日