Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: .NET Core 2.1, .NET Core 3.1, .NET 5
W tym artykule omówiono sposób otwierania podstawowego pliku zrzutu na maszynie wirtualnej z systemem Windows przy użyciu platformy Docker.
Wymagania wstępne
Aby ukończyć tę sekcję, należy skopiować co najmniej jeden plik zrzutu podstawowego na maszynie wirtualnej z systemem Windows w dowolnym folderze.
Cel tego laboratorium
Dowiesz się, jak otworzyć podstawowy plik zrzutu na innej maszynie wirtualnej z systemem Linux przy użyciu platformy Docker.
Informacje o kontenerach i platformie Docker
Zgodnie z oficjalną dokumentacją platformy Docker kontener jest standardową jednostką oprogramowania, która pakuje kod i wszystkie jego zależności, dzięki czemu aplikacja działa szybko i niezawodnie z jednego środowiska obliczeniowego do innego. Obraz kontenera platformy Docker to lekki, autonomiczny, wykonywalny pakiet oprogramowania zawierający wszystko, co jest wymagane do uruchomienia aplikacji: kod, środowisko uruchomieniowe, narzędzia systemowe, biblioteki systemowe i ustawienia.
Po prostu możesz użyć kontenerów platformy Docker do uruchamiania i wdrażania aplikacji. Kontenery platformy Docker można tworzyć z różnych obrazów systemu operacyjnego, takich jak Windows Core lub Ubuntu. W tym ćwiczeniu utworzysz kontener systemu Ubuntu w celu przeanalizowania podstawowego pliku zrzutu.
Aby utworzyć kontenery platformy Docker i używać ich na maszynie wirtualnej z systemem Windows, zainstaluj program Docker Desktop dla systemu Windows. W artykule połączonym wyjaśniono wymagania i kroki instalacji. Zgodnie z wymaganiami platforma Docker używa podsystemu Windows dla systemu Linux (WSL) dla kontenerów systemu Linux.
Uwaga 16.
Platforma Docker może uruchamiać zarówno kontenery systemu Windows, jak i Linux, ale nie w tym samym czasie. W związku z tym należy przełączyć się na kontenery systemu Linux.
Przed rozpoczęciem pracy zalecamy zapoznanie się z tym artykułem z często zadawanymi pytaniami dotyczącymi platformy Docker , aby zapoznać się z platformą Docker.
Tworzenie pliku dockerfile
Po zainstalowaniu aplikacji Docker Desktop w systemie Windows będzie potrzebny plik dockerfile. Plik dockerfile to po prostu zestaw instrukcji tworzenia kontenera. W nazwie pliku "dockerfile" jest rozróżniana wielkość liter i powinna być cała mała litera bez żadnego rozszerzenia nazwy pliku.
Polecenia można uruchamiać w kontenerze docelowym przy użyciu polecenia RUN . Na przykład plik dockerfile w tej sekcji pokazuje, że można użyć RUN mkdir /dumps
polecenia do uruchomienia mkdir /dumps
polecenia w docelowym systemie operacyjnym kontenera.
W tym przykładzie pokazano zawartość pliku dockerfile, która pozwala osiągnąć cel tej sekcji: Tworzenie kontenera ubuntu przy użyciu najnowszego obrazu systemu Ubuntu, instalowanie najnowszego zestawu SDK dotnet, aktualizowanie systemu operacyjnego, instalowanie narzędzi dotnet-dump i dotnet-symbol, kopiowanie i wyodrębnianie plików zrzutu oraz pobieranie wymaganych plików przy użyciu narzędzia dotnet-symbol na jednym z podstawowych plików zrzutu.
Uwaga 16.
Komentarze zaczynają się od znaku funta (#). Komentarze są udostępniane dla każdego wiersza, dzięki czemu można zrozumieć, co robi każde polecenie.
# Install the latest Ubuntu container image
FROM ubuntu:latest
# Install the latest dotnet SDK
FROM mcr.microsoft.com/dotnet/core/sdk:latest AS tools-install
# Update the OS, the slash (\) means that the command continues on the next line
RUN apt-get update \
&& apt-get upgrade -y \
&& apt-get install -y
# Install the dotnet-dump and dotnet-symbol tools in the /dotnetcore-tools folder
RUN dotnet tool install --tool-path /dotnetcore-tools dotnet-dump
RUN dotnet tool install --tool-path /dotnetcore-tools dotnet-symbol
# Add the /dotnetcore-tools in the PATH environment variable to run the dotnet-dump and dotnet-symbol tools directly
ENV PATH="/dotnetcore-tools:${PATH}"
# Create a /dumps folder in the Linux container
RUN mkdir /dumps
# Copy the coredumps.tar.gz file from a Windows VM to the /dumps folder on a Linux VM
COPY ./coredumps.tar.gz /dumps/
# Extract the tar file to the /dumps folder
RUN tar -xf /dumps/coredumps.tar.gz -C /dumps
# Run dotnet-symbol against one of the core dump files to download the required files (such as symbols and DAC)
RUN dotnet-symbol --host-only --debugging ~/dumps/coredump.manual.1.11724
Utwórz plik o nazwie dockerfile w tym samym katalogu, który zawiera plik archiwum coredumps.tar.gz . Pamiętaj: w nazwie pliku jest rozróżniana wielkość liter i nie ma rozszerzenia.
Kompilowanie i uruchamianie kontenera platformy Docker
Ponownie musisz przełączyć się do kontenerów systemu Linux na platformie Docker, jeśli jest uruchomiony kontener systemu Windows.
Następnie otwórz okno wiersza polecenia i przejdź do folderu zawierającego plik coredumps.tar.gz i dockerfile. Aby skompilować kontener platformy Docker, uruchom polecenie docker build -t dotnettools .
.
Uwaga 16.
Parametr -t
oznacza "tag". Ta nazwa tagu będzie używana podczas uruchamiania kontenera platformy Docker.
Kropka (.) na końcu polecenia oznacza, że polecenie kompilacji platformy Docker będzie używać pliku dockerfile z bieżącego katalogu.
Oto dane wyjściowe polecenia kompilacji. Ponieważ to samo polecenie zostało uruchomione kilka razy, używa wewnętrznej pamięci podręcznej dla obrazu docelowego. Przy pierwszym uruchomieniu tego polecenia pobierze niezbędne pliki, a następnie buforuje je do późniejszego użycia w razie potrzeby. Po pierwszym uruchomieniu polecenia może upłynąć trochę czasu na skompilowanie obrazu.
Następnie uruchom kontener przy użyciu docker container run -it dotnettools /bin/bash
polecenia .
To wszystko. Jesteś teraz wewnątrz nowo utworzonego kontenera systemu Linux. Reszta jest taka sama jak poprzednio: Otworzysz podstawowy zrzut przy użyciu tego samego polecenia dotnet-dump: dotnet-dump analyze /dumps/coredump.manual.1.11724
. Oto wynik z przykładowego środowiska używanego do kompilowania serii szkoleniowej.
Możesz uruchomić polecenia SOS, takie jak clrthreads
, aby wyświetlić zarządzane wątki.
Teraz możesz analizować podstawowe pliki zrzutu w kontenerze systemu Linux przy użyciu platformy Docker.