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>.log
lesz.
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.