Vytvořeno: 4.7.2026 | Aktualizováno: 04.07.2026 13:32
Docker Desktop s WSL 2 backendem umožňuje na Windows provozovat Linux kontejnery nad WSL2. Pokud je ale projekt uložený na Windows disku a do Dev Containers se připojuje přes bind mount, mohou být diskové operace v kontejneru extrémně pomalé. Tento návod popisuje ověřený postup z pracovní OpenCode konverzace: přesunout workspace z Windows filesystemu do WSL2 Ubuntu filesystemu a teprve nad ním spustit Cursor/devcontainer.
Původní stav:
Windows filesystem: C:\cursor-ai Docker kontejner: /home/ubuntu <- bind mount z C:\cursor-ai
To bývá velmi pomalé, protože kontejner při práci se soubory sahá přes překladovou vrstvu Windows → Linux.
Cílový stav:
WSL2 Ubuntu filesystem: /home/panhe/cursor-ai Docker kontejner: /home/ubuntu <- bind mount z /home/panhe/cursor-ai
Data zůstávají mimo kontejner, přežijí rebuild kontejneru a zároveň se s nimi pracuje přes rychlý Linux filesystem.
Po migraci jsou na Windows počítači dvě různé Linux vrstvy:
Windows
├─ WSL2 Ubuntu
│ └─ /home/panhe/cursor-ai
│ = fyzické místo, kde leží projektová data
│
└─ Docker Desktop
└─ Docker devcontainer Ubuntu
└─ /home/ubuntu
= vývojové prostředí, kam se data z WSL bind-mountují
WSL Ubuntu není Docker kontejner. Je to Linux distribuce běžící přes WSL2.
Docker kontejner je samostatné prostředí, které používá Docker Desktop. WSL Ubuntu slouží hlavně jako rychlý Linux filesystem a jako místo, odkud Cursor/Dev Containers spouští Docker příkazy. Docker kontejner je skutečné vývojové prostředí podle Dockerfile.
Pokud je v devcontainer.json nastavený bind mount:
"mounts": [
"source=${localWorkspaceFolder},target=/home/ubuntu,type=bind"
]
záleží na tom, odkud Cursor otevřel projekt.
Pokud Cursor otevře projekt z Windows cesty:
C:\cursor-ai
mountuje se do kontejneru Windows filesystem.
Pokud Cursor otevře projekt přes WSL cestu:
/home/panhe/cursor-ai
mountuje se do kontejneru WSL/Linux filesystem.
V Cursoru může prostředí vypadat stejně, protože v obou případech skončíš v kontejneru ve složce /home/ubuntu. Rozdíl je ve zdroji mountu.
V tomto scénáři není potřeba měnit Dockerfile.
Také není nutné měnit devcontainer.json, pokud se má dál mountovat celý obsah workspace do /home/ubuntu.
Příklad původního nastavení může zůstat:
{
"name": "ai",
"build": {
"dockerfile": "Dockerfile"
},
"runArgs": [
"--name=ai",
"--cap-add=SYS_ADMIN",
"--shm-size=2gb"
],
"workspaceFolder": "/home/ubuntu",
"mounts": [
"source=${localWorkspaceFolder},target=/home/ubuntu,type=bind"
],
"remoteUser": "ubuntu",
"updateRemoteUserUID": true
}
Klíčová změna není v těchto souborech. Klíčová změna je v tom, že Cursor otevře projekt ze WSL filesystemu, ne z C:\.
Ve Windows otevři PowerShell a spusť:
wsl -l -v
Můžeš vidět například:
NAME STATE VERSION * docker-desktop-data Running 2 docker-desktop Running 2
To znamená, že zatím existují jen interní WSL distribuce Docker Desktopu:
docker-desktop docker-desktop-data
Tyto distribuce nejsou určené pro pracovní data. Nedávej do nich projekt a nepoužívej je jako pracovní Ubuntu.
Pokud v seznamu není běžná distribuce, například Ubuntu-24.04, nainstaluj ji podle dokumentace Microsoft WSL:
wsl --install -d Ubuntu-24.04
Tento příkaz nevytváří Docker kontejner. Vytváří běžnou WSL2 Ubuntu distribuci, kde bude Linux filesystem:
/home/panhe/...
Po instalaci budeš vyzván k vytvoření Linux uživatele. V reálném příkladu byl uživatel:
panhe
Pokud je defaultní distribuce docker-desktop-data, Cursor se může pokusit připojit právě do ní. To vede k chybám typu:
Resolving wsl remote authority 'wsl+docker-desktop-data' getpwuid(0) failed execvpe(bash) failed: No such file or directory
To znamená, že Cursor zkouší použít interní Docker distribuci, ne pracovní Ubuntu.
Nastav správný default:
wsl --set-default Ubuntu-24.04
Ověř:
wsl -l -v
Správně má být hvězdička u Ubuntu-24.04:
NAME STATE VERSION * Ubuntu-24.04 Running 2 docker-desktop Running 2 docker-desktop-data Running 2
Původní složka byla:
C:\cursor-ai
Ve WSL je Windows disk C: dostupný jako:
/mnt/c
Takže původní složka je ve WSL vidět jako:
/mnt/c/cursor-ai
Spusť Ubuntu WSL:
wsl -d Ubuntu-24.04
Ve WSL vytvoř cílovou složku a zkopíruj obsah:
mkdir -p ~/cursor-ai sudo apt update sudo apt install -y rsync rsync -a --info=progress2 /mnt/c/cursor-ai/ ~/cursor-ai/
Pozor na lomítko na konci:
/mnt/c/cursor-ai/
To znamená „zkopíruj obsah složky“, ne složku samotnou.
Po kopírování ověř:
cd /home/panhe/cursor-ai pwd ls ls .devcontainer git status
Správný pwd výstup:
/home/panhe/cursor-ai
Špatný výstup by byl:
/mnt/c/cursor-ai
Když se Cursor připojí do WSL a pokusí se otevřít devcontainer, může se objevit chyba:
Failed to reopen folder in container: Error running docker info. The command 'docker' could not be found in this WSL 2 distro. We recommend to activate the WSL integration in Docker Desktop settings.
To neznamená, že je potřeba instalovat nový Docker engine do WSL.
Standardní řešení na Windows je použít Docker Desktop a zapnout jeho integraci do WSL distribuce. Postup je v Docker Desktop WSL 2 dokumentaci.
Ve Windows otevři Docker Desktop:
Settings -> Resources -> WSL Integration
Zapni:
Enable integration with my default WSL distro
Případně explicitně zapni:
Ubuntu-24.04
Pak klikni:
Apply & Restart
Ověř ve WSL:
docker version docker info docker ps -a
Pokud příkaz docker funguje, WSL Ubuntu umí komunikovat s Docker Desktopem.
Po restartu Windows může být WSL distribuce ve stavu:
Stopped
To samo o sobě není chyba. WSL distribuce se umí spustit automaticky ve chvíli, kdy ji něco potřebuje.
Pro praktickou práci ale může být pohodlnější zajistit, aby po přihlášení běžel Docker Desktop i WSL Ubuntu.
V Docker Desktopu otevři:
Settings -> General
Zapni:
Start Docker Desktop when you sign in
Potom zkontroluj:
Settings -> Resources -> WSL Integration
Musí být zapnuté:
Enable integration with my default WSL distro
a/nebo explicitně:
Ubuntu-24.04
Pokud má WSL Ubuntu po startu Windows zůstat běžet pořád, lze použít Windows Task Scheduler.
Tento krok není povinný, ale je praktický, pokud má být prostředí po restartu předvídatelné a hned připravené pro Cursor.
Ve Windows otevři:
Task Scheduler
Vytvoř novou úlohu:
Create Basic Task
Název například:
Start WSL Ubuntu
Trigger:
When I log on
Action:
Start a program
Program:
wsl.exe
Arguments:
-d Ubuntu-24.04 --exec bash -lc "sleep infinity"
Tím se po přihlášení spustí Ubuntu WSL a uvnitř poběží nekonečný proces sleep infinity. Díky tomu distribuce zůstane ve stavu Running.
Co je dobré vědět:
Running.
sleep infinity nenahrazuje Docker Desktop autostart ani WSL Integration. Jen drží WSL distribuci živou.
Po restartu Windows ověř v PowerShellu:
wsl -l -v
Očekávané je, že Ubuntu-24.04 může být Running, pokud používáš sleep infinity, nebo Stopped, pokud keepalive nepoužíváš.
Při použití sleep infinity chceš vidět:
Ubuntu-24.04 Running 2
Potom ověř Docker dostupný z WSL:
wsl -d Ubuntu-24.04 -- docker ps
Pokud tento příkaz projde, WSL i Docker Desktop integrace fungují.
Pokud budeš chtít WSL Ubuntu ručně zastavit, spusť v PowerShellu:
wsl --terminate Ubuntu-24.04
Nebo zastav celé WSL prostředí:
wsl --shutdown
Pokud je zapnutá Task Scheduler úloha se sleep infinity, WSL se znovu spustí při dalším přihlášení do Windows.
V Cursoru nepoužívej otevření složky přes Windows cestu:
C:\cursor-ai
Ani jako primární cestu nepoužívej síťovou Windows cestu:
\\wsl.localhost\Ubuntu-24.04\home\panhe\cursor-ai
Tato cesta je užitečná pro Windows Explorer, ale pro vývoj je lepší použít Cursor Remote WSL.
V Cursoru spusť Command Palette:
Ctrl + Shift + P
Použij:
Remote-WSL: New WSL Window
nebo:
WSL: Connect to WSL
Pokud je k dispozici více distribucí, vyber explicitně:
Ubuntu-24.04
V novém WSL okně Cursoru dej:
File -> Open Folder
Zadej Linux cestu:
/home/panhe/cursor-ai
Cursor najde:
/home/panhe/cursor-ai/.devcontainer/devcontainer.json
V Cursoru spusť:
Dev Containers: Rebuild and Reopen in Container
Pokud existuje starý kontejner se stejným jménem, například ai, může nastat konflikt kvůli:
"--name=ai"
V tom případě je možné starý kontejner odstranit, ale pouze pokud je jasné, že důležitá data jsou v bind mountu a ne jen uvnitř kontejneru.
Příklad:
docker stop ai
docker rm ai
Potom znovu spusť rebuild devcontaineru.
Nejspolehlivější kontrola je přes docker inspect.
Spusť ji ve WSL Ubuntu, ne uvnitř kontejneru:
docker inspect ai --format '{{range .Mounts}}{{println .Type .Source "->" .Destination}}{{end}}'
Správný výstup v reálném příkladu byl:
bind /home/panhe/cursor-ai -> /workspaces/cursor-ai bind /home/panhe/cursor-ai -> /home/ubuntu
To je v pořádku. Znamená to, že zdroj dat je:
/home/panhe/cursor-ai
a ne:
C:\cursor-ai
ani:
/run/desktop/mnt/host/c/cursor-ai
Pokud je vidět /home/panhe/cursor-ai → /home/ubuntu, migrace se povedla.
Výstup může obsahovat dva bind mounty:
bind /home/panhe/cursor-ai -> /workspaces/cursor-ai bind /home/panhe/cursor-ai -> /home/ubuntu
To znamená, že stejný WSL adresář je v kontejneru dostupný na dvou místech.
Jeden mount může vytvořit Dev Containers automaticky:
/workspaces/cursor-ai
Druhý odpovídá vlastnímu nastavení v devcontainer.json:
/home/ubuntu
Pokud se pracuje podle workspaceFolder v /home/ubuntu, je hlavní tento mount:
bind /home/panhe/cursor-ai -> /home/ubuntu
Není to problém, pokud všechno funguje.
V terminálu Cursoru uvnitř kontejneru spusť:
pwd mount | grep /home/ubuntu time git status
pwd může ukázat:
/home/ubuntu
To je správně. Rozdíl není v tom, jak cesta vypadá uvnitř kontejneru. Rozdíl je v tom, odkud je /home/ubuntu namountované.
Z Windows Exploreru lze otevřít:
\\wsl.localhost\Ubuntu-24.04\home\panhe\cursor-ai
Tuto cestu lze použít pro občasné otevření, kopírování nebo kontrolu souborů z Windows.
Pro běžnou práci s projektem ale používej Cursor přes WSL a devcontainer. Nedoporučuje se dělat náročné operace jako Git, npm install, composer install nebo indexaci přes Windows aplikace nad \\wsl.localhost.
Příznak:
Resolving wsl remote authority 'wsl+docker-desktop-data' getpwuid(0) failed execvpe(bash) failed: No such file or directory
Význam:
Cursor se snaží použít interní Docker WSL distribuci místo Ubuntu-24.04.
Řešení:
wsl --set-default Ubuntu-24.04
Potom znovu otevři WSL okno v Cursoru.
Příznak:
The command 'docker' could not be found in this WSL 2 distro.
Význam:
Docker Desktop není integrovaný do této WSL distribuce.
Řešení:
Docker Desktop -> Settings -> Resources -> WSL Integration
Zapnout integraci pro default WSL distribuci nebo přímo pro Ubuntu-24.04.
Příznak:
bind /run/desktop/mnt/host/c/cursor-ai -> /home/ubuntu
nebo:
bind C:\cursor-ai -> /home/ubuntu
Význam:
Projekt je pořád otevřený z Windows filesystemu.
Řešení:
Zavřít okno Cursoru a otevřít projekt z WSL Remote okna jako:
/home/panhe/cursor-ai
ne jako:
C:\cursor-ai
Ve Windows PowerShellu:
wsl -l -v
Očekávané:
* Ubuntu-24.04 ... 2
Pokud se používá Task Scheduler se sleep infinity, po restartu Windows očekávej:
Ubuntu-24.04 Running 2
Ve Windows PowerShellu ověř Docker dostupný z WSL:
wsl -d Ubuntu-24.04 -- docker ps
Očekávané:
docker příkaz projde bez chyby
Ve WSL:
pwd
Očekávané ve složce projektu:
/home/panhe/cursor-ai
Ve WSL:
docker ps -a
Očekávané:
docker příkaz funguje a jsou vidět kontejnery Docker Desktopu
Ve WSL:
docker inspect ai --format '{{range .Mounts}}{{println .Type .Source "->" .Destination}}{{end}}'
Očekávané:
bind /home/panhe/cursor-ai -> /home/ubuntu
V kontejneru:
cd /home/ubuntu time git status
Očekávané:
git status je výrazně rychlejší než při práci nad C:\cursor-ai
Funkční řešení není „připojit Cursor do kontejneru“ samo o sobě. Funkční řešení je otevřít projekt z WSL filesystemu a až potom spustit devcontainer.
Správný řetězec je:
Windows -> Cursor Remote WSL: Ubuntu-24.04 -> otevřená složka /home/panhe/cursor-ai -> Dev Containers rebuild -> kontejner ai -> /home/ubuntu bind mount z /home/panhe/cursor-ai
Data zůstávají dostupná z Windows přes:
\\wsl.localhost\Ubuntu-24.04\home\panhe\cursor-ai
a zároveň kontejner pracuje s rychlým Linux filesystemem místo pomalého Windows bind mountu.