Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här stegvisa guiden hjälper dig att komma igång med att utveckla med fjärrcontainrar genom att konfigurera Docker Desktop för Windows med WSL 2 (Windows-undersystem för Linux, version 2).
Docker Desktop för Windows tillhandahåller en utvecklingsmiljö för att skapa, skicka och köra dockeriserade appar. Genom att aktivera den WSL 2-baserade motorn kan du köra både Linux- och Windows-containrar i Docker Desktop på samma dator. (Docker Desktop är kostnadsfritt för personligt bruk och småföretag, för information om Priser för Pro, Team eller Företag, se Vanliga frågor och svar om Docker-webbplatsen.
Anmärkning
Vi rekommenderar att du använder Docker Desktop på grund av dess integrering med Windows och Windows Undersystem för Linux. Docker Desktop stöder dock körning av både Linux- och Windows-containrar, men du kan inte köra båda samtidigt. Om du vill köra Linux- och Windows-containrar samtidigt måste du installera och köra en separat Docker-instans i WSL. Om du behöver köra samtidiga containrar eller bara föredrar att installera en containermotor direkt i Linux-distributionen följer du Linux-installationsanvisningarna för containertjänsten, till exempel Installera Docker Engine på Ubuntu eller Installera Podman för att köra Linux-containrar.
Översikt över Docker-containrar
Docker är ett verktyg som används för att skapa, distribuera och köra program med containrar. Containrar gör det möjligt för utvecklare att paketera en app med alla delar den behöver (bibliotek, ramverk, beroenden osv.) och skicka ut allt som ett paket. Om du använder en container ser du till att appen körs på samma sätt oavsett anpassade inställningar eller tidigare installerade bibliotek på datorn som kör den som kan skilja sig från den dator som användes för att skriva och testa appens kod. Detta gör att utvecklare kan fokusera på att skriva kod utan att behöva oroa sig för det system som koden ska köras på.
Docker-containrar liknar virtuella datorer, men skapar inte ett helt virtuellt operativsystem. Docker gör i stället att appen kan använda samma Linux-kernel som det system som den körs på. På så sätt kan apppaketet endast kräva delar som inte redan finns på värddatorn, vilket minskar paketstorleken och förbättrar prestandan.
Kontinuerlig tillgänglighet, med hjälp av Docker-containrar med verktyg som Kubernetes, är en annan orsak till containrarnas popularitet. Detta gör att flera versioner av din appcontainer kan skapas vid olika tidpunkter. I stället för att behöva ta bort ett helt system för uppdateringar eller underhåll kan varje container (och dess specifika mikrotjänster) ersättas i farten. Du kan förbereda en ny container med alla dina uppdateringar, konfigurera containern för produktion och bara peka på den nya containern när den är klar. Du kan också arkivera olika versioner av din app med hjälp av containrar och hålla dem igång som en säkerhetsåterställning om det behövs.
Mer information finns i Introduktion till Docker-containrar.
Förutsättningar
- WSL version 1.1.3.0 eller senare.
- Windows 11 64-bit: Home- eller Pro-version 21H2 eller högre, eller Enterprise- eller Education-version 21H2 eller högre.
- Windows 10 64-bitars (rekommenderas): Home eller Pro 22H2 (version 19045) eller senare, eller Enterprise eller Education 22H2 (version 19045) eller senare. (Minimum): Home eller Pro 21H2 (build 19044) eller senare, eller Enterprise eller Education 21H2 (version 19044) eller senare. Uppdatera Windows
- 64-bitars processor med SLAT (Second Level Address Translation).
- 4 GB system-RAM.
- Aktivera maskinvaruvirtualisering i BIOS.
- Installera WSL och konfigurera ett användarnamn och lösenord för din Linux-distribution som körs i WSL 2.
- Installera Visual Studio Code(valfritt). Detta ger bästa möjliga upplevelse, inklusive möjligheten att koda och felsöka i en fjärransluten Docker-container och ansluta till din Linux-distribution.
- Installera Windows Terminal(valfritt). Detta ger den bästa upplevelsen, inklusive möjligheten att anpassa och öppna flera terminaler i samma gränssnitt (inklusive Ubuntu, Debian, PowerShell, Azure CLI eller vad du föredrar att använda).
- Registrera dig för ett Docker-ID på Docker Hub(valfritt).
- Se Docker Desktop-licensavtalet för uppdateringar om användningsvillkoren.
Mer information finns i Docker-dokumenten Systemkrav för att installera Docker Desktop i Windows.
Information om hur du installerar Docker på Windows Server finns i Komma igång: Förbereda Windows för containrar.
Anmärkning
WSL kan köra distributioner i både WSL-version 1- eller WSL 2-läge. Du kan kontrollera detta genom att öppna PowerShell och ange: wsl -l -v
. Kontrollera att distributionen är inställd på att använda WSL 2 genom att ange: wsl --set-version <distro> 2
. Ersätt <distro>
med distributionsnamnet (t.ex. Ubuntu 18.04).
På grund av grundläggande skillnader mellan Windows och Linux i WSL version 1 kunde Docker-motorn inte köras direkt i WSL, så Docker-teamet utvecklade en alternativ lösning med hjälp av Hyper-V virtuella datorer och LinuxKit. Men eftersom WSL 2 nu körs på en Linux-kernel med fullständig systemanropskapacitet kan Docker köras helt i WSL 2. Det innebär att Linux-containrar kan köras internt utan emulering, vilket ger bättre prestanda och samverkan mellan dina Windows- och Linux-verktyg.
Installera Docker Desktop
Med WSL 2-serverdelen som stöds i Docker Desktop för Windows kan du arbeta i en Linux-baserad utvecklingsmiljö och skapa Linux-baserade containrar, samtidigt som du använder Visual Studio Code för kodredigering och felsökning och kör containern i Microsoft Edge-webbläsaren i Windows.
Så här installerar du Docker (efter att du redan har installerat WSL):
Ladda ned Docker Desktop och följ installationsanvisningarna.
När du är installerad startar du Docker Desktop från Start-menyn i Windows och väljer sedan Docker-ikonen från menyn med dolda ikoner i aktivitetsfältet. Högerklicka på ikonen för att visa Docker-kommandomenyn och välj "Inställningar".
Kontrollera att "Använd den WSL 2-baserade motorn" är markerat i Allmänna inställningar>.
Välj från de installerade WSL 2-distributionerna som du vill aktivera Docker-integrering på genom att gå till: Inställningar>Resurser>WSL-integrering.
Bekräfta att Docker har installerats genom att öppna en WSL-distribution (t.ex. Ubuntu) och visa versionen och versionsnumret genom att ange:
docker --version
Testa att installationen fungerar korrekt genom att köra en enkel inbyggd Docker-avbildning med hjälp av:
docker run hello-world
Tips/Råd
Här följer några användbara Docker-kommandon att känna till:
- Visa en lista över de kommandon som är tillgängliga i Docker CLI genom att ange:
docker
- Lista information för ett specifikt kommando med:
docker <COMMAND> --help
- Lista docker-bilderna på din dator (som för närvarande bara är hello-world-bilden), med:
docker image ls --all
- Lista containrarna på din maskin med:
docker container ls --all
ellerdocker ps -a
(utan -a visa alla-flaggan, visas endast körande containrar) - Lista systemomfattande information om Docker-installationen, inklusive statistik och resurser (CPU och minne) som är tillgängliga för dig i WSL 2-kontexten, med:
docker info
Utveckla i fjärrcontainrar med VS Code
För att komma igång med att utveckla appar med Docker med WSL 2 rekommenderar vi att du använder VS Code, tillsammans med tilläggen WSL, Dev Containers och Docker.
Installera VS Code WSL-tillägget. Med det här tillägget kan du öppna ditt Linux-projekt som körs på WSL i VS Code (du behöver inte bekymra dig om sökvägsproblem, binär kompatibilitet eller andra utmaningar mellan operativsystem).
Installera TILLÄGGET VS Code Dev Containers. Med det här tillägget kan du öppna projektmappen eller lagringsplatsen i en container och dra nytta av Visual Studio Codes fullständiga funktionsuppsättning för att utföra ditt utvecklingsarbete i containern.
Installera VS Code Docker-tillägget. Det här tillägget lägger till funktioner för att skapa, hantera och distribuera containerbaserade program inifrån VS Code. (Du behöver Dev Containers-tillägget för att faktiskt använda containern som utvecklingsmiljö.)
Nu ska vi använda Docker för att skapa en utvecklingscontainer för ett befintligt appprojekt.
I det här exemplet använder jag källkoden från min Hello World-självstudiekurs för Django i python-utvecklingsmiljön som har konfigurerats med dokument. Du kan hoppa över det här steget om du föredrar att använda din egen källkod för projektet. Om du vill ladda ned min HelloWorld-Django webbapp från GitHub öppnar du en WSL-terminal (till exempel Ubuntu) och anger:
git clone https://github.com/mattwojo/helloworld-django.git
Anmärkning
Lagra alltid koden i samma filsystem som du använder verktyg i. Detta resulterar i snabbare prestanda för filåtkomst. I det här exemplet använder vi en Linux-distribution (Ubuntu) och vill lagra våra projektfiler i WSL-filsystemet
\\wsl\
. Att lagra projektfiler i Windows-filsystemet skulle göra saker och ting betydligt långsammare när du använder Linux-verktyg i WSL för att få åtkomst till dessa filer.Från WSL-terminalen ändrar du kataloger till källkodsmappen för det här projektet:
cd helloworld-django
Öppna projektet i VS Code som körs på den lokala WSL-tilläggsservern genom att ange:
code .
Bekräfta att du är ansluten till din WSL Linux-distribution genom att kontrollera den gröna fjärrindikatorn i det nedre vänstra hörnet av VS Code-instansen.
Från VS Code-kommandopaletten (Ctrl + Skift + P) anger du: Dev Containers: Öppna igen i containern eftersom vi använder en mapp som redan har öppnats med WSL-tillägget. Du kan också använda Dev Containers: Open Folder in Container... för att välja en WSL-mapp med hjälp av den lokala
\\wsl$
resursen (från Windows-sidan). Mer information finns i Snabbstart för Visual Studio Code : Öppna en befintlig mapp i en container . Om dessa kommandon inte visas när du börjar skriva kontrollerar du att du har installerat Dev Containers-tillägget som är länkat ovan.Välj den projektmapp som du vill kontainera. I mitt fall är detta
\\wsl\Ubuntu-20.04\home\mattwojo\repos\helloworld-django\
En lista över containerdefinitioner visas, eftersom det inte finns någon konfiguration av dev-containern i projektmappen (lagringsplatsen) ännu. Listan över containerkonfigurationsdefinitioner som visas filtreras baserat på din projekttyp. För mitt Django-projekt väljer jag Python 3.
En ny instans av VS Code öppnas, börjar skapa vår nya avbildning och när bygget är klart startar containern. Du ser att en ny
.devcontainer
mapp har dykt upp med information om containerkonfiguration i enDockerfile
ochdevcontainer.json
-fil.Bekräfta att projektet fortfarande är anslutet till både WSL och i en container genom att öppna den integrerade VS Code-terminalen (Ctrl + Skift + ~). Kontrollera operativsystemet genom att ange:
uname
och Python-versionen med:python3 --version
. Du kan se att uname kom tillbaka som "Linux", så du är fortfarande ansluten till WSL 2-motorn, och Python-versionsnumret baseras på containerkonfigurationen som kan skilja sig från Python-versionen som är installerad på din WSL-distribution.Om du vill köra och felsöka din app i containern med Hjälp av Visual Studio Code öppnar du först menyn Kör (Ctrl+Skift+D eller väljer fliken på menyraden längst till vänster). Välj sedan Kör och Felsök för att välja en felsökningskonfiguration och välj den konfiguration som passar ditt projekt bäst (i mitt exempel blir detta "Django"). Då skapas en
launch.json
fil i mappen för.vscode
projektet med instruktioner om hur du kör din app.Inifrån VS Code väljer du Kör>Starta felsökning (eller tryck bara på F5-tangenten ). Detta öppnar en terminal i VS Code och du bör se ett resultat som säger något i stil med: "Starta utvecklingsservern vid http://127.0.0.1:8000/ Avsluta servern med CONTROL-C." Håll ned kontrollnyckeln och välj den adress som visas för att öppna appen i standardwebbläsaren och se hur projektet körs i containern.
Nu har du konfigurerat en fjärrutvecklingscontainer med Docker Desktop, som drivs av WSL 2-serverdelen, som du kan koda i, skapa, köra, distribuera eller felsöka med VS Code!
Felsökning
WSL Docker-kontexten är föråldrad
Om du använde en tidig teknisk förhandsversion av Docker för WSL kan du ha en Docker-kontext med namnet "wsl" som nu är inaktuell och inte längre används. Du kan kontrollera med kommandot: docker context ls
. Du kan ta bort den här "wsl"-kontexten för att undvika fel med kommandot: docker context rm wsl
eftersom du vill använda standardkontexten för både Windows och WSL2.
Möjliga fel som kan uppstå med den här inaktuella wsl-kontexten är: docker wsl open //./pipe/docker_wsl: The system cannot find the file specified.
eller error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_wsl/v1.40/images/json?all=1: open //./pipe/docker_wsl: The system cannot find the file specified.
Mer information om det här problemet finns i Konfigurera Docker i Windows System for Linux (WSL2) på Windows 10.
Problem med att hitta docker-avbildningslagringsmappen
Docker skapar två distributionsmappar för att lagra data:
- \wsl$\docker-desktop
- \wsl$\docker-desktop-data
Du hittar dessa mappar genom att öppna din WSL Linux-distribution och ange: explorer.exe .
för att visa mappen i Utforskaren i Windows. Ange: \\wsl\<distro name>\mnt\wsl
ersätt <distro name>
med namnet på din distribution (dvs. Ubuntu-20.04) för att se dessa mappar.
Mer information om hur du hittar docker-lagringsplatser i WSL finns i det här problemet från WSL-lagringsplatsen eller det här StackOverflow-inlägget.
Mer hjälp med allmänna felsökningsproblem i WSL finns i felsökningsdokumentet.
Ytterligare resurser
- Docker-dokument: Metodtips för Docker Desktop med WSL 2
- Feedback för Docker Desktop för Windows: Skapa ett problem
- VS Code-blogg: Riktlinjer för att välja en utvecklingsmiljö
- VS Code-blogg: Använda Docker i WSL 2
- VS Code-blogg: Använda fjärrcontainrar i WSL 2
- Hanselminutes Podcast: Gör Docker härlig för utvecklare med Simon Ferquel
Windows Subsystem for Linux