Visual Studioを使用すると、.netコアアプリケーションを作成してLinuxコンテナーで実行すると、Visual Studio2017を使用して簡単にデバッグできます。
しかし、cmdからdocker runを使用して同じイメージインスタンス(リリースバージョン)を実行すると、VS2017でそのインスタンスにアタッチする方法を見つけることができません。
Visual Studioがそれを行う方法と、すでに実行されているDocker Linux .netコアコンテナーに対して同じことを行う方法、およびDockerイメージインスタンスがリモートLinuxマシンで実行されている場合に同じことを行う方法を理解したいと思います。
例を挙げた具体的な手順はほとんど役に立ちません。
Ankushのブログ投稿を読んだら、これはどうですか。
サービスがmicrosoft / dotnetイメージに基づいている場合は、同じイメージに基づいて新しいdockerfileを作成し、デバッガー、ssh、およびunzipをインストールします。
FROM microsoft/dotnet
RUN apt-get update && apt-get -y install openssh-server unzip
RUN mkdir /var/run/sshd && chmod 0755 /var/run/sshd
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin without-password/g' /etc/ssh/sshd_config
RUN sed -i 's/#StrictModes yes/StrictModes no/g' /etc/ssh/sshd_config
RUN service ssh restart
RUN mkdir /root/.vs-debugger && chmod 0755 /root/.vs-debugger
RUN curl -sSL https://aka.ms/getvsdbgsh | bash /dev/stdin -v vs2017u1 -l /root/.vs-debugger/
EXPOSE 22
これをビルドしてレジストリにプッシュします。
docker build -t myregistry/dotnetdebugger .
docker push myregistry/dotnetdebugger
次に、サービスのビルドがPDBファイルをポータブルPDBとして出力していることを確認しますhttps://github.com/Microsoft/MIEngine/wiki/Offroad-Debugging-of-.NET-Core-on-Linux---OSX-from-Visual -スタジオ
また、サービスのDockerイメージをビルドするときに、PDBファイルがdllに含まれていることを確認してください。または、サイドカーコンテナを起動するときに、PDBファイルを含むアーティファクトディレクトリをボリュームマウントします。
次に、コンテナーが実行されていて、それをデバッグする必要があると判断した場合、デバッガーコンテナーをサイドカーコンテナーとしてサービスにアタッチできます。
docker run -d -p 10222:22 --pid container:<container name> myregistry/dotnetdebugger
次に、Visual Studioで、[ツール]> [オプション]> [クロスプラットフォーム]> [接続マネージャー]に移動し、新しい接続を追加します。サイドカーコンテナのIPまたはホスト名を指定し、ポート(docker runコマンドのポート)として10222を指定し、パスワードのないユーザーとしてrootを指定します。
完了したら、サイドカーコンテナーをシャットダウンし、サービスコンテナーを実行したままにして、サービスの一般的な操作に必要のないものを公開しないようにすることができます。
お役に立てば幸いです
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加