- Docker Desktop na Windowsu se oslanja na virtualizaciju (Hyper-V ili WSL2) kako bi obezbijedio kernel. Linux i pokreću kontejnere.
- WSL2 vam omogućava da instalirate Docker Engine direktno unutar Linux distribucije, izbjegavajući Docker Desktop kada GUI nije potreban.
- U Windows Pro/Enterprise operativnom sistemu, Hyper-V se može koristiti kao alternativni backend za Docker Desktop i druge virtuelne mašine.
- Bez podrške za virtualizaciju hardver Mogućnosti korištenja Docker Desktopa svode se na udaljena rješenja ili drugu opremu.

Instaliranje i korištenje Docker Desktopa na Windowsu kada nemate aktivnu virtualizaciju hardvera (ili vaš CPU ili vaš BIOSMožda se čini kao nemoguća misija, posebno ako ste pogledali desetine tutorijala koji pretpostavljaju da imate pokrenut Hyper-V ili WSL2. Ali postoji još nijansi: Windows kontejneri, Linux kontejneri, WSL2, Hyper-V, klasične virtuelne mašine... i svaka kombinacija ima svoja ograničenja.
U ovom vodiču ćemo smireno, ali direktno objasniti šta se može, a šta ne može uraditi sa Docker Desktopom bez virtualizacije hardvera.Koje stvarne alternative imate za pokretanje kontejnera na Windowsu, kako iskoristiti WSL2 i "čisti" Docker Engine da biste izbjegli Docker Desktop kada je to potrebno i šta... trikovi Možete se prijaviti za razvoj s kontejnerima udobno koristeći VS Code, čak i na skromnoj opremi.
Kontejneri, Docker Desktop i Docker Engine: Ključni koncepti
Prije nego što se razmotri zahtjevi za virtualizaciju, potrebno je razjasniti neke osnovne koncepte.jer ono što ćete moći da uradite na svojoj mašini zavisi od njih:
Kontejner nije baš virtuelna mašina.Dijeli kernel sa host sistemom i izoluje procese, biblioteke i datotečni sistem. Zato Linux kontejneri koriste Linux kernel hosta, a Windows kontejneri koriste Windows kernel hosta, osim ako ne dodate sloj virtualizacije između.
docker-engine To je "pravi" mehanizam Dockera, servisa koji kreira, upravlja i pokreće kontejnere. Izvorno radi na Linuxu i njime se upravlja putem komandne linije. naredbe I potpuno je besplatan, bez ograničenja korištenja, dizajniran i za razvoj i za produkciju.
Docker Desktop je desktop aplikacija što uključuje Docker Engine plus grafički interfejs, Kubernetes integraciju, alate za razvoj, panel s resursima, jednostavnu konfiguraciju itd. Na Windowsu i macOS-u se uvijek oslanja na neki oblik virtualizacije kako bi se osiguralo Linux okruženje u kojem će se kontejneri nalaziti.
Velika razlika između Linuxa i Windowsa Činjenica je da na Linuxu, Docker Engine može raditi direktno na kernelu bez virtuelne mašine između, dok na Windowsu i macOS-u Docker Desktop koristi skrivenu Linux virtuelnu mašinu, oslanjajući se ili na WSL2 ili Hyper-V, što podrazumijeva potrebu za virtuelizacijom na nivou hardvera.
Konačno, Windows kontejneri Mogu se pokretati u dva načina: izolacija procesa (dijeljenje Windows kernela hosta) ili izolacija u Hyper-V stilu (svaki kontejner se pokreće unutar mini-VM-a). U praksi, za većinu modernih scenarija s Docker Desktopom na Windowsu, virtualizacija se u konačnici koristi u jednom ili drugom obliku.
Mogu li se Windows kontejneri pokretati bez Hyper-V-a?

Tipično pitanje je da li je moguće pokrenuti "čiste" Windows kontejnere bez Hyper-V-a.Ovo se postiže korištenjem samo glavnog Windows kernela u režimu izolacije procesa, čime se izbjegava virtualizacija hardvera. U teoriji, izolacija procesa omogućava upravo to: korištenje istog kernela bez hipervizora između.
Praktični problem je što većina scenarija koje podržavaju Docker Desktop i moderne verzije Windowsa Dizajnirani su za rad sa omogućenim Hyper-V i/ili WSL2. Čak i kada koristi Windows kontejnere, Docker Desktop se uveliko oslanja na Microsoftovu infrastrukturu za virtualizaciju.
Pokušaj pokretanja Windows kontejnera bez ikakve virtualizacije To vas vodi vrlo restriktivnim putem: ovisite o vrlo specifičnim verzijama Windows Servera ili Windowsa 10/11, potrebne su vam određene funkcije, a čak i tada je iskustvo krhko, složeno za konfiguriranje i daleko od onoga što standardni Docker Desktop nudi.
Osim toga, projekti poput pokretanja Dockera za Windows na Wineu u Linuxu Suočavaju se s prilično surovom stvarnošću: Docker Desktop i Docker engine na Windowsu očekuju da mogu komunicirati sa slojevima virtualizacije i vrlo specifičnim sistemskim API-jima. Wine ne implementira sve to pouzdano, tako da je ova ideja više teorijski eksperiment nego upotrebljivo rješenje.
Praktični zaključak u ovom trenutku: ako su vam cilj Windows kontejneri na modernom Windows hostuPrije ili kasnije, trebat će vam virtualizacija (Hyper-V ili WSL2) za funkcionalno i podržano iskustvo. Bez nje, sve postaje vrlo ograničeno rješenje.
Opcije ako vam je potreban Docker na Windowsu bez oslanjanja na Docker Desktop

Ako iz bilo kojeg razloga želite ili trebate izbjeći Docker Desktop na Windows hostuImate nekoliko razumnih alternativa ovisno o vašem hardveru i verziji Windowsa koju koristite.
Najklasičnija opcija je kreiranje virtuelne mašine sa Linuxom. Koristeći alate poput VMware Workstation, Oracle VirtualBox ili Microsoftovog Hyper-V-a, možete instalirati Linux distribuciju i unutar nje postaviti Docker Engine. Međutim, sva ova rješenja i dalje zahtijevaju omogućenu hardversku virtualizaciju u BIOS-u.
VMware i VirtualBox Dobro funkcionišu, ali pripadaju kompanijama sa sumnjivim poslovnim praksama i donekle visokim troškovima resursa. Uprkos tome, to su vrlo zrela rješenja, sa korisnički prilagođenim interfejsima za upravljanje i mnoštvom dokumentacije i tutorijala dostupnih online.
Hyper-V Dolazi integriran s Windowsom (Pro izdanja i novija), besplatan je i vrlo robustan. Omogućava vam kreiranje laganih virtualnih mašina na kojima možete implementirati Linux i, unutar njega, Docker Engine. To je vrlo atraktivna opcija ako već imate Windows Pro ili Enterprise i želite prilično "zvanično" okruženje bez instaliranja softvera trećih strana.
Najjednostavnija alternativa za većinu kućnih korisnika i programera danas To uključuje korištenje WSL2 (Windows podsistem za Linux 2) i pokretanje Docker Engine-a direktno unutar Linux distribucije. Na ovaj način, možete potpuno zaboraviti na Docker Desktop ako želite, raditi iz Linux komandne linije i nastaviti koristiti svoje Windows alate.
Instaliranje i priprema WSL2 na Windows 10 i Windows 11
WSL2 je postao preporučena metoda od strane Microsofta i Dockera za rad sa Linux kontejnerima na Windowsu, kako na Windowsu 10, tako i na Windows 11Nudi pravi Linux kernel upakovan u malu, optimizovanu virtuelnu mašinu i veoma dobro se integriše sa sistemom.
Prvo provjerite da li je vaša verzija Windowsa kompatibilna. Pritisnite WIN+R, piše winver i provjerite podatke:
- Windows 10 Mora biti najmanje verzija 1903 sa buildom 18362.1049 ili novija.
- Windows 11 Kompatibilan je sa svim trenutnim verzijama.
Zatim provjerite je li omogućena virtualizacija hardvera.. Otvorite Task Manager, idite na karticu Performanse, Odaberite CPU I pogledajte blok s informacijama: trebalo bi da piše „Virtualizacija: omogućena“.
Ako se prikazuje kao onemogućeno, a vaš CPU podržava virtualizacijuMorat ćete ući u UEFI/BIOS vaše matične ploče i omogućiti opcije virtualizacije (Intel VT-x, AMD-V ili slično). Ako je vaš procesor vrlo star ili ga je proizvođač blokirao, ovo će biti vaše fizičko ograničenje.
Da biste omogućili WSL2 funkcije na Windowsu, pritisnite WIN+R, piše optionalfeatures A u prozoru sa funkcijama, označite ova dva unosa:
Virtual Machine PlatformWindows Subsystem for Linux
Dozvolite Windowsu da preuzme i instalira potrebne komponente.Kada završite, tražit će se od vas da ponovo pokrenete računar. Učinite to, jer se bez ponovnog pokretanja WSL2 neće ispravno primijeniti.
Kada se sistem ponovo pokrene, otvorite Komandni redak sa administratorskim dozvolama (potražite "Komandni redak" u meniju Start > kliknite desnim tasterom miša > Pokreni kao administrator) i pokrenite:
wsl --set-default-version 2
Zatim ažurira WSL2 kernel na najnoviju dostupnu verziju sa:
wsl --update --web-download
Da biste vidjeli koje Linux distribucije možete instalirati, navedite one koje su dostupne na internetu:
wsl --list --online
Opšta preporuka za početnike Radi se o korištenju novije verzije Ubuntu LTS-a.jer se većina dokumentacije i primjera zasniva na njemu. Na primjer, za instalaciju Ubuntu 24.04 LTS:
wsl --install --web-download --distribution Ubuntu-24.04
Kada je instalacija distribucije završena, automatski će se otvoriti prozor terminal Od vas će se tražiti da kreirate korisničko ime i lozinku za taj Linux sistem. Odaberite sigurne podatke za prijavu; idealno bi bilo da se ne podudaraju s vašim Windows računom.
Ako želite optimizirati prostor koji zauzima virtualni disk distribucije,Možete ga konfigurirati kao "rijetko" (dinamičko) iz Windows komandne linije:
wsl --manage Ubuntu-24.04 --set-sparse true
Od ove tačke nadalje imate kompletno Linux okruženje koje radi "unutar" Windowsa.Možete mu pristupiti u bilo kojem trenutku pokretanjem wsl od CMD, PowerShell ili korištenjem Windows Terminala, koji će također kreirati profile za svaku instaliranu distribuciju.
Instalirajte Docker Engine na WSL2 bez Docker Desktopa
S obzirom da Linux distribucija radi pod WSL2, sljedeći korak je direktno instaliranje Docker Engine-a tamo.Ovo izbjegava dodatni sloj Docker Desktopa. To vam daje gotovo nativne performanse i, u mnogim slučajevima, pojednostavljuje stvari ako vam nije potreban grafički interfejs.
Pokrenite svoj Ubuntu u WSL2 i prvo ažurirajte listu paketa kako biste bili sigurni da je sve ažurno:
sudo apt-get update
Instalirajte osnovne zavisnosti za rad sa HTTPS repozitorijima i upravljajte GPG ključevima trećih strana:
sudo apt-get install ca-certificates curl
Kreirajte direktorij u koji ćete pohraniti GPG ključ za službeni Docker repozitorij. i preuzmite ključ:
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
Dodajte službeni Docker repozitorij za Ubuntu koristeći arhitekturu i kodno ime vašeg sistema:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Ponovo ažurirajte repozitorije sada kada ste dodali Docker izvorni kod i instalirajte motor pomoću alata:
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Da biste izbjegli stalnu potrebu za korištenjem sudo naredbe s Docker naredbamaDodajte svog Linux korisnika u grupu docker:
sudo usermod -aG docker $USER
Odjavite se iz distribucije i ponovo se prijavite (ili zatvorite WSL prozor i ponovo ga otvorite) da bi promjene grupe stupile na snagu. Ako je sve prošlo dobro, moći ćete pokrenuti:
docker info
docker run --rm hello-world
Ako vidite Docker poruku dobrodošlice, vaše Linux kontejnersko okruženje već je pokrenuto i radi na WSL2.potpuno nezavisno od Docker Desktopa i sa vrlo niskom potrošnjom resursa.
Koristite Docker Desktop sa WSL2 backendom umjesto Hyper-V-a
Ako više volite "desktop" iskustvo, s grafičkim interfejsom i čarobnjacimaMožete nastaviti koristiti Docker Desktop, ali navedite da koristi WSL2 kao backend umjesto Hyper-V-a. Ovo je posebno korisno na Windows 10 Home, gdje puni Hyper-V nije dostupan.
Preuzmite Docker Desktop sa službene Docker web stranice i pokrenite instalacijski program. Tokom procesa, ako vaš sistem podržava oba, pitat će vas želite li koristiti WSL2 ili Hyper-V. U većini scenarija razvoja, preporuka je odabrati WSL2.
Nakon instalacije, pokrenite Docker Desktop iz menija Start.Kada se ikona Dockera pojavi u sistemskoj paleti (možda je u meniju skrivenih ikona), kliknite desnim tasterom miša na nju i unesite... Postavke.
U odjeljku Općenito u postavkama, provjerite je li označen okvir "Koristi WSL 2 bazirani mehanizam".jer je to onaj koji govori Docker Desktopu da se osloni na WSL2 za pokretanje Linux kontejnera.
Unutar Postavke > Resursi > WSL integracijaVidjet ćete listu instaliranih WSL2 distribucija. Omogućite integraciju za one na kojima želite koristiti Docker (na primjer, vaš Ubuntu 24.04). Od tada ćete moći pokretati kontejnere iz te distribucije koristeći Docker Engine kojim upravlja Docker Desktop.
Da biste potvrdili da je sve u redu, otvorite terminal u vašoj WSL distribuciji. i izvrši:
docker --version
docker run hello-world
Ako testni kontejner radi bez problema, Docker Desktop radi sa WSL2 backendom.Ovo vam omogućava da kombinujete grafički interfejs, jednostavno upravljanje slikama i razumno dobre performanse WSL2.
Hyper-V kao alternativa virtualizaciji za Docker Desktop
Na sistemima sa Windows 10/11 Pro ili Enterprise operativnim sistemom i dostupnom virtualizacijom hardveraDruga opcija je da Docker Desktopu dozvolite da direktno koristi Hyper-V kao mehanizam za virtualizaciju za vašu internu Linux virtuelnu mašinu.
Hyper-V je Microsoftov izvorni hipervizorDostupan je i na Windows Serveru i na profesionalnim izdanjima Windowsa za desktop računare. Za Docker, djeluje kao host za laganu virtuelnu mašinu na kojoj se izvršavaju Docker Engine i cijeli kontejnerski stek.
Da biste omogućili Hyper-V, vratite se na ploču sa funkcijama Windowsa. (Kontrolna tabla > Programi > Programi i funkcije > Uključivanje ili isključivanje funkcija Windowsa) i označite polje Hyper-VAko se to od vas zatraži, pripremite ISO datoteku ili dopustite Windowsu da preuzme komponente.
Nakon ponovnog pokretanja, preuzmite i instalirajte Docker Desktop za Windows.Tokom čarobnjaka, poništite odabir opcije za korištenje WSL2 kao pozadinskog okruženja i ostavite korištenje Hyper-V omogućeno. Instalacijski program će kreirati Docker VM na Hyper-V i konfigurirati potrebne servise.
Kada ponovo pokrenete Docker DesktopPrijavite se sa svojim Docker računom (besplatno za ličnu i upotrebu malih preduzeća) i popunite kratki upitnik dobrodošlice. Ako postoje greške boot Za mehanizam, provjerite da li je Hyper-V ispravno omogućen i da se ne nalazite unutar druge virtuelne mašine bez ugniježđene virtualizacije.
Iz Docker Desktop interfejsa možete vidjeti korištenje CPU-a i memorije vaših kontejnera.Preuzmite slike iz Huba, pokrenite kontejnere iz integrirane pretrage i općenito se poigrajte s njim bez ikakvog dodirivanja komandne linije. Međutim, cijena je što to apsolutno ovisi o virtualizaciji hardvera Hyper-V-a.
Zahtjevi Docker Desktopa na Windowsu i ograničenja bez virtualizacije
Po dizajnu, Docker Desktop na Windowsu zahtijeva da virtualizacija bude omogućena.Bez obzira da li koristite Hyper-V ili postavljate malo WSL2 okruženje sa njegovim Linux kernelom, ovaj zahtjev nije proizvoljan: Linux kontejnerima je potreban Linux kernel, a na Windowsu to možete obezbijediti samo putem virtuelne mašine.
Tipični minimalni zahtjevi za instaliranje Docker Desktopa na Windows 10 uključuju:
- 64-bitni CPU sa SLAT-om i omogućena podrška za virtualizaciju hardvera.
- Najmanje 4 GB RAM-a kako bi sistem i kontejneri mogli disati.
- Windows 10 Home, Pro ili Enterpriseili ekvivalentni Windows 11.
- 20 GB ili više prostora na disku za sam alat, slike i volumene.
- Hyper-V ili WSL2 aktiviran prema Windows izdanju.
Na Windows 10 Home sistemu možete koristiti Docker Desktop samo sa WSL2 backendom.Pošto puni Hyper-V nije uključen. U Pro i Enterprise verzijama možete birati, ali trenutno je WSL2 obično najfleksibilnija opcija s najboljom integracijom za razvoj.
Ako nemate dostupnu ili omogućenu virtualizaciju hardveraSituacija postaje složenija: Docker Desktop se neće ispravno pokrenuti, a čak i ako pokušate zaobilazna rješenja, radit ćete protiv zadanog dizajna alata. U tom slučaju, rješenje je obično korištenje druge mašine, udaljenog Linux servera ili barem virtuelne mašine u oblaku.
Integrirajte Docker i WSL2 sa Visual Studio Code-om i udaljenim kontejnerima
Nakon što pokrenete kontejnere (bilo s Docker Engine-om na WSL2 ili s Docker Desktop-om)Najpogodniji način razvoja je obično korištenje Visual Studio Code-a i njegovih proširenja za udaljena okruženja.
Prvi korak je instaliranje "WSL" ekstenzije u VS CodeOvo proširenje vam omogućava da direktno u VS Code-u otvarate foldere koji se nalaze na vašoj Linux distribuciji (na primjer, Ubuntu u WSL2), bez glavobolja oko putanja, dozvola ili nekompatibilnih binarnih datoteka.
Također instalirajte ekstenziju „Dev Containers“Zahvaljujući tome, možete otvoriti svoj projekat unutar Docker kontejnera i taj kontejner učiniti vašim kompletnim razvojnim okruženjem: zavisnosti, Python verziju, Node, .NET, itd., sve enkapsulirano.
Na kraju, dodajte ekstenziju „Docker“ za VS Code da bi se moglo upravljati slikama, kontejnerima, logovima i implementacijama iz vlastitog interfejsa editora, pomoću bočnih panela i kontekstualnih naredbi.
Tipičan tijek rada bi bio kloniranje projekta na vašu WSL2 distribuciju., na primjer:
git clone https://github.com/<usuario>/mi-proyecto.git
cd mi-proyecto
Odatle pokrećete VS Code pokazujući na mapu projekta sa:
code .
U paleti komandi VS Code-a (Ctrl+Shift+P), odaberite "Dev Containers: Reopen in Container" (Razvojni kontejneri: Ponovno otvaranje u kontejneru). tako da se projekat ponovo otvori unutar Docker kontejnera definisanog konfiguracijom .devcontainerAko ne postoji, ekstenzija će predložiti predloške na osnovu tipa projekta (Python, Node, .NET, itd.).
Nakon što je kontejner izgrađen i pokrenut, imat ćete čisto i reproducibilno razvojno okruženje.Pomoću njega možete otklanjati greške, pokretati testove, pokretati razvojni server i otvarati ga u Windows pregledniku kao da je lokalna aplikacija.
Uobičajeni problemi i kako ih riješiti
Ako ste ikada isprobali probne verzije Dockera za WSLMožda imate Docker kontekst pod nazivom wsl što je već zastarjelo i može generirati greške poput „open //./pipe/docker_wsl: Sistem ne može pronaći navedenu datoteku“.
Da biste provjerili dostupne kontekste, pokrenite:
docker context ls
Ako vidite onu koja se zove wslMožete ga izbrisati sa potpunim mirom uma. koristeći:
docker context rm wsl
Još jedna stvar koja često uzrokuje glavobolje je lociranje mjesta gdje Docker pohranjuje podatke pri radu sa WSL2.Obično ćete vidjeti nešto ovako:
\wsl$\docker-desktop\wsl$\docker-desktop-data
Da biste ih istražili iz Windows Explorera datotekaOtvorite terminal u vašoj WSL distribuciji i pokrenite:
explorer.exe .
Ako navigirate rutom \\wsl\<Distro>\mnt\wsl (zamjena <Distro> njihovim pravim imenom, na primjer Ubuntu-24.04), trebali biste moći vidjeti mape u kojima Docker Desktop pohranjuje slojeve i volumene slika.
Kada Docker Desktop odbija da se pokrene ili se "zaglavi"Gotovo uvijek je povezano s jednom od ovih tačaka: virtualizacija onemogućena u BIOS-u, oštećene Hyper-V usluge, zastarjeli WSL2 ili konflikti s drugim alatom za virtualizaciju koji također želi kontrolirati VT-x/AMD-V.
Šta učiniti ako vaš hardver ne podržava virtualizaciju hardvera
Ako nakon pregleda BIOS-a i dokumentacije otkrijete da vaš računar zapravo ne podržava virtualizaciju hardveraMogućnosti su znatno smanjene, a posebno Docker Desktop neće biti održiva opcija na Windowsu.
U tom slučaju, razumna rješenja uključuju oslanjanje na drugu mašinu ili oblak.Mali Linux server na vašoj lokalnoj mreži, instanca na jeftinom cloud provajderu ili čak noviji laptop koji nudi VT-x/AMD-V. Sa vašeg Windows računara možete se povezati putem SSH i tamo koristite Docker Engine.
Također možete slijediti put "softverske" virtualizacije s vrlo starim alatima ili eksperimentalnim konfiguracijama.Međutim, performanse će biti loše, a stabilnost upitna. Možda će funkcionirati za vrlo osnovno okruženje za učenje, ali za bilo šta iole ozbiljno, najbolje je ne oslanjati se na takvu vrstu rješenja.
Ukratko, ako je vaša grafička kartica pristojna, ali vaš procesor ne podržava virtualizaciju, onda ste u problemu.Možete nastaviti raditi s lokalnim alatima za razvoj i rezervirati Docker i kontejnere za udaljeno okruženje. Nije toliko praktično, ali barem ćete imati kompatibilno i održivo okruženje.
Postavljanje razumnog Docker Desktop okruženja bez aktivne virtualizacije hardvera na Windowsu je ozbiljno ograničeno dizajnom alata i potrebom za Linux kernelom u VM-u.Međutim, kombinovanjem WSL2, izvornog Docker Engine-a na Linuxu, integracije sa Visual Studio Code-om i, kada hardver dozvoljava, Hyper-V ili WSL2 kao Docker Desktop backend-a, možete imati moćno, fleksibilno i prilično lagano kontejnersko okruženje čak i na kućnim računarima, pod uslovom da pretpostavimo da virtualizacija hardvera više nije opcionalna, već praktično početni zahtev.
Strastveni pisac o svijetu bajtova i tehnologije općenito. Volim dijeliti svoje znanje kroz pisanje, a to je ono što ću raditi na ovom blogu, pokazivati vam sve najzanimljivije stvari o gadžetima, softveru, hardveru, tehnološkim trendovima i još mnogo toga. Moj cilj je pomoći vam da se krećete u digitalnom svijetu na jednostavan i zabavan način.