Genom att introducera Windows Subsystem for Linux (WSL) gav Microsoft utvecklare möjlighet att köra en GNU/Linux-miljö direkt på Windows, oförändrad, utan att behöva använda en virtuell maskin. Det här är en bra lösning eftersom många utvecklare använder ett system för programmering och ett annat för underhållning.
WSL är fortfarande under utveckling, men det är för närvarande lämpligt för moderna Utveckling av programvara, både i den första och den andra versionen. Genom att bläddra igenom de problem och frågor som rapporterats på internet verkar de flesta av dem beröra integrationen av WSL med Docker, särskilt när det gäller uppgradering från WSL 1 till WSL 2.
Den här artikeln kommer att skingra alla tvetydigheter och hjälpa dig att komma igenom denna process smärtfritt. Om du inte har WSL 1 och du vill ha WSL 2 med Docker kan du hoppa direkt till det sista kapitlet.
Vad får du ut av det?
- Den senaste stabila Linux-kärnan (trimmad av Microsoft). WSL 1 har ett Linux-kompatibelt kärngränssnitt utan Linux-kärnan kod.
- Ökad prestanda för fil-IO. Upp till 20x snabbare jämfört med WSL 1 vid uppackning av en zippad tarball, cirka 2-5x snabbare vid användning av git-klon
, npm-installation
och cmake
på olika projekt.
- Fullständig kompatibilitet med systemanrop. Linux-binärfiler använder systemanrop för att utföra många funktioner, som att komma åt filer, begära minne, skapa processer och mycket mer. Medan WSL 1 använde ett översättningslager som byggdes av WSL TeamWSL 2 innehåller en egen Linux-kärna med full kompatibilitet med systemanrop.
- Filer som lagras i en inbyggd ext4-partition på en virtuell disk.
- Mycket enkelt sätt att integrera med Docker.
Jag tror att för de flesta användare låter fil IO-prestanda och enkel dockerintegration som tillräckliga skäl.
Kom igen, nu kör vi!
Jag antar att du har den senaste stabila versionen av Windows 10 Pro. När det gäller idag är det 1909-utgåvan.
Gå med i Windows insiders
För närvarande är WSL 2 endast tillgängligt för Windows 10 i insiders' slow ring. Såvitt jag vet bör den stabila versionen finnas tillgänglig i maj 2020 (20H1-utgåvan). Den långsamma ringen är en ganska säker lösning för användare som vill ha nya funktioner lite tidigare, redan förtestade av användare av snabb ring. Den långsamma ringen får systemuppdateringar upp till en eller två gånger i månaden. Du kan läsa om insiders release-ändringar i Microsoft-dokumentet som heter Flygnav.
För att gå med följer du bara Microsofts officiella guide. Det är mycket enkelt och tar cirka 15 minuter utan att några personuppgifter går förlorade.
Uppgradering av WSL 1 till WSL 2
Följ den officiella guide. Det är också mycket enkelt, ett par skalkommandon och så är du igång! Beroende på hur omfattande din Linux under WSL 1 var kan detta ta lite tid. Tyvärr har Microsoft inte lagt in någon progressbar eller information om tidsåtgången, så det är bara att ha tålamod.
Städa upp
Detta är den viktigaste delen för korrekt samarbete mellan WSL 2 och Docker. Efter uppgradering till WSL 2 försöker många användare tvinga sin version av Docker att samarbeta utan att inse att Docker-teamet, särskilt för WSL 2, har förberett en release som kommer att göra allt för oss. Detta är den sista utgåvan av Docker Edge-versionen (deras betanamn) - "Docker Desktop WSL 2 backend". Denna version, 2.1.7.0, är en välpolerad och är en kandidat för den kommande stabila utgåvan.
Användare som inte hade WSL 1 eller just har installerat en ny version av WSL 2 har tur och kan omedelbart hoppa till det sista kapitlet.
Om du inte har rensat din Docker (alls eller korrekt) och inte har installerat rätt version av Docker för WSL 2, kan du stöta på några vanliga fel, t.ex, Det går inte att ansluta till Docker-daemon på tcp://localhost:2375", "Körs Docker-daemon
osv. I de flesta fall kommer du att förlora tid om du inte vet att du måste ta ett nytt tillvägagångssätt för att försöka lösa dessa fel. För att göra detta måste du först helt ta bort Docker från WSL och Windows, vilket inte är ett uppenbart steg.
Det vanligaste exemplet på rester som inte tagits bort är den gamla Docker-metoden att ställa in miljövariabeln DOCKER_HOST=tcp://localhost:2375
under WSL 1 för att samarbeta med Windows Docker-alternativet Exponera daemon på tcp://localhost:2375 utan TLS
.
Hur tar man bort Docker helt från WSL (Ubuntu)?
- Som den officiella Docker Dokument säga:
sudo apt-get remove docker docker-engine docker.io containerd runc
Säkert kan du lägga till denna lista docker-ce
och docker-ce-cli
.
- Identifiera alla dockerpaket som du har med
dpkg -l | grep -i docker
och ta bort om det fortfarande finns några kvar.
- Ta bort alla rester:
sudo rm -rf /var/lib/docker /etc/docker /etc/apparmor.d/docker /var/run/docker.sock /usr/local/bin/docker-compose /etc/docker
sudo groupdel docker ~/.docker
- Det här steget är för avancerade användare, så var försiktig. Förmodligen behöver du inte göra det.
Hitta alla Docka
ord förekomster och ta bort de som du är säker på.
sudo hitta / -namn "*docker*"
- Kontrollera innehållet i alla filer nedan för
Docka
förekomster som t.ex. miljövariabel DOCKER_HOST=tcp://localhost:2375
.
Du kan redigera dessa filer med Nano-redigeraren, nano ~/.bashrc
eller Visual Studio Code, kod ~/.bashrc
.
~/.bashrc
~/.bash_aliaser
~/.bash_profile
~/.bash_login
~/.profil
/etc/bash.bashrc
/etc/profile
Hur man helt tar bort Docker från Windows?
- Avinstallera på vanligt sätt med Windows
Appar och funktioner
panel.
- Ta bort allt nedan om det finns:
C:ProgramfilerDocker
C:ProgramDataDockerDesktop
C:Användare[USERNAME].docker
C:Users[USERNAME]AppDataLocalDocker
C:Users[USERNAME]AppDataRoamingDocker
C:Users[USERNAME]AppDataRoamingDocker Skrivbord
Vad händer härnäst?
Installera den senaste versionen av Docker Desktop Edge från här och följ stegen från den officiella Dokument. Det handlar egentligen bara om några få klick.
Om allt går bra bör du ha din utgång från wsl -l -v
...så här:
NAMN TILLSTÅND VERSION
Ubuntu-18.04 Körs 2
docker-desktop Löpande 2
docker-desktop-data Körs 2
Det är allt. Docker har skapat sina egna WSL-containrar docker-desktop
och docker-desktop-data
. Vissa av de tillgängliga handledningarna eller råden kan vara förvirrande eftersom den här gången du bör inte installera eller konfigurera något som är relaterat till Docker under din WSL Linux-distribution. Det är mycket viktigt att komma ihåg. Efter rengöringen ska den fungera bra direkt.
Dessutom...
Att konfigurera WSL 2 med Docker kan vara en smärtfri process med några enkla steg. Börja med att uppdatera paketlistor med hjälp av kommandot "sudo apt-get update" för att säkerställa att du har den senaste versionsinformationen. Lös eventuella saknade beroenden med "sudo apt-get install -y build-essential" för en smidig installationsupplevelse. Installera Docker-motor med "sudo apt-get installera -y docker-engine" för att enkelt bygga, köra och hantera containrar. Kör "sudo docker run" följt av avbildningens namn för att starta behållare. För att hålla din miljö optimerad kan du regelbundet köra "sudo docker system prune" för att ta bort oanvända behållare och frigöra diskutrymme. Med dessa steg kan du njuta av den sömlösa integrationen av WSL 2 och Docker för effektiv containerisering i ditt utvecklingsarbetsflöde.