Docker Desktop na Windows
Vytvořeno: 1.4.2026 | Aktualizováno: 29.10.2026 10:47
Docker Desktop je nejjednodušší způsob, jak na Windows rozchodit Docker pro běh Linux kontejnerů. Pro běžné použití a pro otevření připraveného projektu ve Visual Studio Code se na Windows typicky používá WSL 2 backend.
Co je potřeba
- Windows 10 nebo 11
- práva správce pro instalaci
- stažený instalátor Docker Desktop
Pro běžné použití není potřeba ručně nastavovat Ubuntu ve WSL. Důležité je hlavně to, aby Docker Desktop měl funkční WSL 2 backend.
Instalace Docker Desktop
- Stáhnout Docker Desktop z oficiální stránky.
- Spustit instalátor.
- Dokončit instalaci podle průvodce.
- Spustit Docker Desktop.
- Pokud Docker naběhne bez chyby, není potřeba nic dalšího řešit.
Kdy je potřeba WSL
Pokud Docker Desktop při instalaci nebo při prvním spuštění hlásí, že chybí WSL 2 nebo že je potřeba WSL aktualizovat, je potřeba otevřít PowerShell jako správce a spustit tyto příkazy:
wsl --install wsl --update
Po dokončení je vhodné restartovat Windows a znovu spustit Docker Desktop.
Pokud příkaz wsl –install nahlásí, že už je WSL nainstalované, je to v pořádku. V takovém případě obvykle stačí wsl –update a restart systému.
Instalace Visual Studio Code
Visual Studio Code stačí stáhnout z oficiální stránky, spustit instalátor a editor otevřít. Pro tento návod není potřeba nic složitě nastavovat navíc.
Instalace pluginu Dev Containers
Ve Visual Studio Code Dev Containers otevřít záložku rozšíření klávesovou zkratkou Ctrl+Shift+X, vyhledat Dev Containers od autora Anysphere a rozšíření nainstalovat. Pokud místo VS Code používáš Cursor nebo jiný podobný editor, princip je stejný: do editoru se nainstaluje rozšíření Dev Containers od autora Anysphere.
Jak otevřít připravený projekt
- Otevřít složku projektu ve Visual Studio Code.
- Stisknout
F1. - Spustit příkaz
Dev Containers: Reopen in Container.
Editor pak vytvoří a spustí kontejner podle připraveného .devcontainer nastavení.
Jak ověřit, že Docker běží
Po úspěšné instalaci lze v PowerShellu spustit tyto příkazy:
docker version
docker ps
Pokud příkazy nevrátí chybu, Docker běží správně a je připravený pro otevření projektu.
Pomalé diskové operace v devcontaineru
Pokud jsou operace jako git status, otevírání souborů nebo instalace závislostí v devcontaineru extrémně pomalé, problém může být v tom, že projekt leží na Windows filesystemu a do kontejneru je připojený přes bind mount. Praktický postup je popsaný v samostatném návodu Zrychlení Docker devcontaineru na Windows přes WSL2.
VS Code Server a vysoké vytížení procesoru
VS Code Server při práci se vzdálenými soubory spouští mimo jiné hlídač změn a rozšíření pro Git a npm. Pokud je otevřený velmi rozsáhlý workspace, jejich automatická činnost může dlouho zatěžovat procesor. Následující zkušenost pochází z Remote-SSH do Docker kontejneru na Raspberry Pi s Alpine Linuxem, nikoli z Docker Desktop na Windows. Slouží jako vodítko pro diagnostiku jiného systému, ne jako důkaz stejné příčiny na Windows nebo v devcontaineru.
Příznak a zjištěná příčina
Měl jsem otevřený celý domovský adresář jako workspace. Obsahoval přes 1,5 milionu souborů, přibližně 85 000 složek, 57 Git repozitářů a symbolické odkazy mimo domovský adresář. Load average dosahoval 8,04 na čtyřjádrovém Raspberry Pi. Hodnota zahrnuje zátěž celého systému, nejen VS Code.
Měření ukázalo tyto činnosti:
- Rozšíření
vscode.npmspustilorg, aby vyhledalo souborypackage.jsonpro panel NPM Scripts. Proces běžel přes devět minut a využíval 135 % CPU; přepínač--followjej vedl i přes symbolické odkazy. - Proces
fileWatchers knihovnou@parcel/watcherprocházel strom souborů. Využíval 70–98 % CPU, za 7,5 minuty nedoběhl a jeho paměť RSS vzrostla na 532 MB. - Git v procesu
extensionHostvyužíval 5–15 % CPU při práci s 57 repozitáři.
Postup diagnostiky
- Zjisti, jak velký workspace je otevřený, kolik obsahuje repozitářů a zda symbolické odkazy vedou do dalších rozsáhlých stromů. Nejmenší změnou může být otevřít jen potřebnou složku projektu. V popsaném případě jsem ale potřeboval ponechat otevřený celý domov.
- V prostředí, kde běží VS Code Server, sleduj procesy a jejich příkazové řádky. Rozliš
fileWatcher,extensionHost, případné procesyrga ostatní zátěž. Hodnota nad 100 % CPU může znamenat využití více než jednoho jádra. - U dlouho běžícího hlídače zkontroluj také spotřebu paměti, otevřené soubory a počet inotify hlídačů. Nulový počet sám o sobě nedokazuje, že proces inotify nepoužívá: může ještě probíhat úvodní procházení stromu.
- Změň jen potřebná nastavení, restartuj vzdálenou relaci VS Code a po dokončení úvodního průchodu změř stav znovu. Výsledek porovnej s původním měřením a zkontroluj i dopady na používané funkce.
Příklad kontroly v Linuxu; příkaz ps předpokládá variantu s podporou uvedených přepínačů. Příkazy spusť v kontejneru nebo systému, kde běží server, ne automaticky v PowerShellu na Windows:
ps -eo pid,ppid,pcpu,rss,args | grep -E '[f]ileWatcher|[e]xtensionHost|[r]g '
Po výběru správného PID hlídače lze prozkoumat jeho otevřené deskriptory a inotify záznamy. Doplň vlastní PID; přístup k /proc závisí na oprávněních a konfiguraci systému:
P=1234 # nahraď PID procesu fileWatcher ls -l /proc/$P/fd for f in /proc/$P/fd/*; do if [ "$(readlink "$f")" = "anon_inode:inotify" ]; then grep -c '^inotify ' "/proc/$P/fdinfo/${f##*/}" fi done
Prázdný výstup nebo nula vyžadují další kontrolu: ověř PID, oprávnění a to, zda hlídač ještě neprochází strom. Otevřené složky a rostoucí RSS mohou napovědět, kde pracuje. Počet hlídačů není sám o sobě měřítkem vytížení CPU.
Úprava nastavení
V uvedeném prostředí pomohlo upravit vzdálené nastavení VS Code Serveru v ~/.vscode-server/data/Machine/settings.json. Přesné cesty a vhodné výjimky závisí na systému. Soubor nejprve zkontroluj a změny začleň do existující konfigurace; nepřepisuj ji naslepo. Následující cesty jsou anonymizované příklady a je nutné je nahradit skutečnými absolutními cestami:
{
"npm.autoDetect": "off",
"search.followSymlinks": false,
"git.autoRepositoryDetection": "openEditors",
"files.watcherExclude": {
"/home/uzivatel/projekt-a/runs": true,
"/home/uzivatel/projekt-a/tasks": true,
"**/node_modules": true,
"**/.venv": true,
"**/__pycache__": true
}
}
Po restartu VS Code v tomto konkrétním měření hlídač procházel strom přibližně 80 sekund, potom využíval 0,5–2,4 % CPU, měl 28 154 inotify hlídačů a 176 MB RSS. Load average klesl na 2,21; jde o hodnotu celého systému a nelze ji připsat výhradně VS Code.
Jak zapisovat výjimky hlídače
V testované verzi @parcel/watcher bylo důležité vyloučit samotnou složku, ne jen její obsah. Vzor zakončený /** dovolil hlídači do složky vstoupit a při úvodním průchodu zkoumat její položky. Na jednom stromu vyšlo měření takto:
- Cesta s hvězdičkou a koncovým
/**: 11,3–11,8 s. - Cesta s hvězdičkou, ale bez koncového
/**: 8,4 s. - Konkrétní absolutní cesta k vyloučené složce bez koncového
/**: 1,2–1,3 s.
Pro toto prostředí se proto osvědčily konkrétní absolutní cesty bez závěrečného /**. Pro složky stejného jména na různých místech lze zvážit obecný vzor jako **/node_modules. Výsledek závisí na verzi VS Code, knihovně, struktuře stromu a skutečných cestách: po změně jej znovu změř. Při přidání další velké složky může být potřeba doplnit její vlastní výjimku.
Dopady nastavení
npm.autoDetect: offvypne automatickou detekci npm skriptů: zmizí panel NPM Scripts a automaticky nalezené npm úlohy. Skripty lze dál spouštět v terminálu.search.followSymlinks: falsezabrání hledání obsahu za symbolickými odkazy. Chování rychlého otevření souboru pomocíCtrl+Pnebylo ověřeno.git.autoRepositoryDetection: openEditorsomezí automatickou detekci na repozitáře související s otevřenými soubory. Další lze otevřít přesGit: Open Repository; Git v terminálu funguje dál.- Ve složkách vyloučených pomocí
files.watcherExcludese změny nemusí samy projevit v Exploreru; použij Refresh. Nebylo ověřeno, zda editor rozpozná externí změnu už otevřeného souboru v takové složce. - Obecná výjimka jako
**/tempnebo**/vendorzasáhne každou složku daného jména, tedy případně i vlastní zdrojové soubory. Vylučuj jen to, u čeho je tento dopad přijatelný.
Nastavení je vhodné zálohovat. Při smazání ~/.vscode-server, například při vytvoření nového kontejneru, může zmizet i vzdálená konfigurace. Před obnovou porovnej zálohu s případným existujícím souborem. Po upgradu VS Code znovu ověř chování výjimek, protože se může změnit.
Chyby při původní opravě
- Náhradní test místo skutečné knihovny: první výjimky končily
/**. Odhad pomocífind -prunevypadal příznivě, alefindsložku vynechal celou a nechoval se stejně jako hlídač. Po restartu hlídač dál využíval 93–98 % CPU. Teprve test se stejnou knihovnou@parcel/watcherukázal rozdíl. Chování výjimek je potřeba ověřit skutečným nástrojem a následným měřením procesu. - Chybný výklad nulového počtu inotify hlídačů: nula byla nejprve považována za důkaz, že proces inotify nepoužívá. Ve skutečnosti ještě nedokončil úvodní průchod. Pomohla kontrola rostoucí RSS a otevřených složek v
/proc/<pid>/fd. - Podhodnocené počty složek: první sčítání mělo limit osm sekund na každou složku. Velké stromy se proto nestihly projít celé. Výsledek nelze vydávat za přesný počet; vždy kontroluj, zda měření doběhlo bez časového limitu.
Co není potřeba řešit
- není potřeba ručně otevírat Ubuntu a něco v něm nastavovat
- není potřeba ručně vytvářet kontejnery předem
- není potřeba ručně upravovat
.devcontainer, pokud je už připravený v projektu