Megosztás a következőn keresztül:


Hibaelhárítás

Problémát tapasztal a gép beállításával vagy egy tároló futtatásával? Létrehoztunk egy PowerShell-szkriptet a gyakori problémák ellenőrzéséhez. Először próbálja ki, hogy mit talál, és ossza meg az eredményeket.

Invoke-WebRequest https://aka.ms/Debug-ContainerHost.ps1 -UseBasicParsing | Invoke-Expression

A szkript Readme fájl-ban található a futtatott összes teszt listája a gyakori megoldásokkal együtt.

Ha ez nem segít megtalálni a probléma forrását, kérjük, folytassa, és tegye közzé a szkript kimenetét a Container Forum. Ez a legjobb hely, ahol segítséget kaphat a közösségtől, beleértve a Windows Insider-résztvevőket és a fejlesztőket.

Naplók keresése

A Windows-tárolók kezelésére több szolgáltatás is használható. A következő szakaszok bemutatják, hogy hol lehet naplókat lekérni az egyes szolgáltatásokhoz.

Docker-tárolónaplók

A docker logs parancs lekéri a tároló naplóit az STDOUT/STDERR-ből, amely a Linux-alkalmazások standard alkalmazásnapló-letéti helye. A Windows-alkalmazások általában nem jelentkeznek be az STDOUT/STDERR szolgáltatásba; ehelyett többek között az ETW-be, az eseménynaplókba vagy a naplófájlba jelentkeznek be.

Log Monitor, a Microsoft által támogatott nyílt forráskódú eszköz már elérhető a GitHubon. A Log Monitor hidat képez a Windows-alkalmazásnaplók között az STDOUT/STDERR felé. A Naplófigyelő konfigurációs fájlon keresztül van konfigurálva.

Naplómonitor használata

LogMonitor.exe és LogMonitorConfig.json is ugyanabban a LogMonitor könyvtárban kell szerepelnie.

A Naplófigyelő a SHELL használati mintájában is használható:

SHELL ["C:\\LogMonitor\\LogMonitor.exe", "cmd", "/S", "/C"]
CMD c:\windows\system32\ping.exe -n 20 localhost

Vagy egy ENTRYPOINT-használati minta:

ENTRYPOINT C:\LogMonitor\LogMonitor.exe c:\windows\system32\ping.exe -n 20 localhost

Mindkét példahasználat körbefuttatja a ping.exe alkalmazást. Egyéb alkalmazások (például IIS. A ServiceMonitor) hasonló módon ágyazható be a Log Monitorba:

COPY LogMonitor.exe LogMonitorConfig.json C:\LogMonitor\
WORKDIR /LogMonitor
SHELL ["C:\\LogMonitor\\LogMonitor.exe", "powershell.exe"]

# Start IIS Remote Management and monitor IIS
ENTRYPOINT      Start-Service WMSVC; `
                    C:\ServiceMonitor.exe w3svc;

A Log Monitor gyermekfolyamatként indítja el a burkolt alkalmazást, és figyeli az alkalmazás STDOUT-kimenetét.

Vegye figyelembe, hogy a SHELL használati mintájában a CMD/ENTRYPOINT utasítást a SHELL űrlapon kell megadni, és nem exec formában. Ha a CMD/ENTRYPOINT utasítás exec formáját használja, a shell nem indul el, és a Naplófigyelő nem indul el a tárolóban.

További használati információk a Naplófigyelő wiki. A kulcsfontosságú Windows-tároló forgatókönyvekhez (IIS stb.) készült példa konfigurációs fájlok megtalálhatók a GitHub-adattárban. További kontextust talál ebben a blogbejegyzésben.

Docker-motor

A Docker Engine nem fájlba, hanem a Windows "Alkalmazás" eseménynaplójába naplóz. Ezek a naplók egyszerűen olvashatók, rendezhetők és szűrhetők a Windows PowerShell használatával

Ez például az utolsó 5 perc Docker Engine-naplóit jeleníti meg a legrégebbitől kezdve.

Get-EventLog -LogName Application -Source Docker -After (Get-Date).AddMinutes(-5) | Sort-Object Time

Ezt egy CSV-fájlba is egyszerűen be lehet csövezni, hogy egy másik eszköz vagy számolótábla felolvassa.

Get-EventLog -LogName Application -Source Docker -After (Get-Date).AddMinutes(-30)  | Sort-Object Time | Export-CSV ~/last30minutes.CSV

Hibakeresési naplózás engedélyezése

A Docker-motoron is engedélyezheti a hibakeresési szintű naplózást. Ez akkor lehet hasznos a hibaelhárításhoz, ha a rendszeres naplók nem rendelkeznek elég részletességgel.

Először nyisson meg egy emelt szintű parancssort, majd futtassa sc.exe qc docker kérje le a Docker szolgáltatás aktuális parancssorát. Példa:

C:\> sc.exe qc docker
[SC] QueryServiceConfig SUCCESS

SERVICE_NAME: docker
        TYPE               : 10  WIN32_OWN_PROCESS
        START_TYPE         : 2   AUTO_START
        ERROR_CONTROL      : 1   NORMAL
        BINARY_PATH_NAME   : "C:\Program Files\Docker\dockerd.exe" --run-service
        LOAD_ORDER_GROUP   :
        TAG                : 0
        DISPLAY_NAME       : Docker Engine
        DEPENDENCIES       :
        SERVICE_START_NAME : LocalSystem

Vegye az aktuális BINARY_PATH_NAME, és módosítsa:

  • -D hozzáadása a végéhez
  • Helyettesítsen minden " karaktert a \ karakterrel
  • Az egész parancsot belefoglalja a következőbe: "

Ezután futtassa le a sc.exe config docker binpath= parancsot, majd az új karakterláncot. Például:

sc.exe config docker binpath= "\"C:\Program Files\Docker\dockerd.exe\" --run-service -D"

Most indítsa újra a Docker szolgáltatást

sc.exe stop docker
sc.exe start docker

Ez sokkal több bejegyzést fog rögzíteni az alkalmazásesemény-naplóba, ezért a hibaelhárítás után a legjobb eltávolítani a -D beállítást. A hibakeresési naplózás letiltásához használja a fenti lépéseket -D nélkül, majd indítsa újra a szolgáltatást.

A fentiek másik alternatívaként futtassa a Docker-démont hibakeresési módban egy emelt szintű PowerShell-parancssorból, amely közvetlenül egy fájlba rögzíti a kimenetet.

sc.exe stop docker
<path\to\>dockerd.exe -D > daemon.log 2>&1

Veremkép beszerzése

Ez általában csak akkor hasznos, ha a Microsoft ügyfélszolgálata vagy a Docker-fejlesztők kifejezetten kérik. Segítségével diagnosztizálható egy olyan helyzet, amikor a Docker úgy tűnik, hogy lefagyott.

Töltse le docker-signal.exe.

Használat:

docker-signal --pid=$((Get-Process dockerd).Id)

A kimeneti fájl abban az adatgyökerű könyvtárban lesz, amelyben a Docker fut. Az alapértelmezett könyvtár C:\ProgramData\Docker. Az aktuális könyvtár a docker info -f "{{.DockerRootDir}}"futtatásával megerősíthető.

A fájl goroutine-stacks-<timestamp>.loglesz.

Vegye figyelembe, hogy goroutine-stacks*.log nem tartalmaznak személyes adatokat.

Gazdagép számítási szolgáltatása

A Docker-motor egy Windows-specifikus gazdagép-számítási szolgáltatástól függ. Külön naplókkal rendelkezik:

  • Microsoft-Windows-Hyper-V-Compute-Admin
  • Microsoft-Windows-Hyper-V-Compute-Operational

Az Eseménynaplóban láthatók, és a PowerShell-lel is lekérdezhetők.

Például:

Get-WinEvent -LogName Microsoft-Windows-Hyper-V-Compute-Admin
Get-WinEvent -LogName Microsoft-Windows-Hyper-V-Compute-Operational

HCS elemzési/hibakeresési naplók rögzítése

Az analitikai/hibakeresési naplók engedélyezése a Hyper-V Compute-hoz és mentése a hcslog.evtx-re.

# Enable the analytic logs
wevtutil.exe sl Microsoft-Windows-Hyper-V-Compute-Analytic /e:true /q:true

# <reproduce your issue>

# Export to an evtx
wevtutil.exe epl Microsoft-Windows-Hyper-V-Compute-Analytic <hcslog.evtx>

# Disable
wevtutil.exe sl Microsoft-Windows-Hyper-V-Compute-Analytic /e:false /q:true

HCS részletes nyomkövetés rögzítése

Ezek általában csak akkor hasznosak, ha a Microsoft ügyfélszolgálata kéri.

Letöltés HcsTraceProfile.wprp

# Enable tracing
wpr.exe -start HcsTraceProfile.wprp!HcsArgon -filemode

# <reproduce your issue>

# Capture to HcsTrace.etl
wpr.exe -stop HcsTrace.etl "some description"

Adja meg HcsTrace.etl a támogatási kapcsolattartónak.