Zavedením subsystému Windows Subsystem for Linux (WSL) poskytla společnost Microsoft vývojářům možnost spouštět prostředí GNU/Linux přímo v systému Windows, bez úprav a bez režie virtuálního počítače. To je skvělé řešení, protože mnoho vývojářů používá jeden systém pro programování a druhý pro zábavu.
WSL se stále vyvíjí, ale v současné době je vhodný pro moderní technologie. vývoj softwaru, a to jak v první, tak ve druhé verzi. Při procházení problémů a otázek nahlášených na internetu se zdá, že většina z nich se týká integrace WSL s Docker, zejména pokud jde o přechod z WSL 1 na WSL 2.
Tento článek rozptýlí všechny nejasnosti a pomůže vám projít tímto procesem bezbolestně. Pokud nemáte WSL 1 a chcete mít WSL 2 s Dockerem, můžete přejít rovnou na poslední kapitolu.
Co tím získáte?
- Skutečné nejnovější stabilní jádro Linuxu (vyladěné společností Microsoft). WSL 1 má rozhraní jádra kompatibilní s Linuxem bez linuxového jádra. kód.
- Zvýšení výkonu IO souborů. Až 20x rychlejší v porovnání s WSL 1 při rozbalování zazipovaného tarballu, přibližně 2-5x rychlejší při použití WSL 1. git clone, npm install a cmake na různých projektech.
- Plná kompatibilita systémových volání. Binární soubory Linuxu používají systémová volání k provádění mnoha funkcí, jako je přístup k souborům, požadavek na paměť, vytváření procesů a mnoho dalších. Zatímco WSL 1 používal překladovou vrstvu vytvořenou pomocí WSL tým, WSL 2 obsahuje vlastní jádro Linux s plnou kompatibilitou systémových volání.
- Soubory uložené v nativním oddílu ext4 na virtuálním disku.
- Velmi snadný způsob integrace s Dockerem.
Myslím, že pro většinu uživatelů je výkon IO souborů a snadná integrace dockeru dostatečným důvodem.
Jdeme na to!
Předpokládám, že máte nejnovější stabilní verzi systému Windows 10 Pro. Pokud jde o dnešek, jedná se o verzi 1909.
Připojte se k zasvěceným uživatelům systému Windows
V současné době je WSL 2 k dispozici pouze pro Windows 10 v pomalém kruhu zasvěcených. Pokud vím, stabilní verze by měla být k dispozici v květnu 2020 (vydání 20H1). Pomalý prstenec je poměrně bezpečné řešení pro uživatele, kteří chtějí mít nové funkce o něco dříve, již předem otestované uživateli rychlého prstence. Pomalý prstenec dostává aktualizace systému až jednou nebo dvakrát měsíčně. O změnách v insiderském vydání si můžete přečíst v dokumentu společnosti Microsoft s názvem Letové centrum.
Chcete-li se připojit, stačí sledovat oficiální stránky společnosti Microsoft průvodce. Je to velmi snadné a zabere to asi 15 minut bez ztráty osobních údajů.
Upgrade WSL 1 na WSL 2
Sledujte oficiální průvodce. Je to také velmi snadné, pár příkazů shellu a je to! V závislosti na tom, jak rozsáhlý byl váš Linux pod WSL 1, to může chvíli trvat. Microsoft bohužel neumístil ukazatel průběhu ani informaci o potřebném čase, takže buďte trpěliví.
Úklid
To je nejdůležitější část pro správnou spolupráci WSL 2 a Dockeru. Po přechodu na WSL 2 se mnoho uživatelů snaží přinutit svou verzi Dockeru ke spolupráci, aniž by si uvědomili, že tým Dockeru, speciálně pro WSL 2, připravil verzi, která udělá vše pro nás. Jedná se o poslední vydání verze Docker Edge (jejich beta název) - "Docker Desktop WSL 2 backend". Tato verze, 2.1.7.0, je dobře vyladěná a je kandidátem na nadcházející stabilní vydání.
Uživatelé, kteří neměli WSL 1 nebo si právě nainstalovali čerstvou verzi WSL 2, mají štěstí a mohou okamžitě přeskočit na poslední kapitolu.
Pokud jste Docker nevyčistili (vůbec nebo správně) a nenainstalovali jste správnou verzi Dockeru pro WSL 2, můžete se setkat s některými běžnými chybami, např., Cannot connect to the Docker daemon at tcp://localhost:2375", "Je spuštěn démon Docker?, atd. Ve většině případů ztratíte čas, pokud nebudete vědět, že při pokusu o vyřešení těchto chyb musíte zvolit nový přístup. Abyste to mohli udělat, musíte nejprve zcela odstranit Docker z WSL a Windows, což není samozřejmý krok.
Nejčastějším příkladem neodstraněných pozůstatků je starý přístup Dockeru k nastavení proměnné prostředí. DOCKER_HOST=tcp://localhost:2375 pod WSL 1 pro spolupráci s možností Windows Docker Vystavení démona na tcp://localhost:2375 bez TLS.
Jak úplně odstranit Docker z WSL (Ubuntu)?
- Jako oficiální Docker dokumenty říkají:
sudo apt-get remove docker docker-engine docker.io containerd runc
Určitě můžete do tohoto seznamu přidat docker-ce a docker-ce-cli.
- Identifikujte všechny balíčky dockeru, které máte pomocí
dpkg -l | grep -i docker a odstranit, pokud ještě nějaké existují.
- Odstraňte všechny zbytky:
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
- Tento krok je určen pro pokročilé uživatele, proto buďte opatrní. Pravděpodobně jej nemusíte provádět.
Najít všechny docker výskytů slov a odstraňte ty, u kterých jste si jisti.
sudo find / -name "*docker*"
- Zkontrolujte obsah všech níže uvedených souborů, zda
docker výskyty jako např. proměnná prostředí DOCKER_HOST=tcp://localhost:2375.
Tyto soubory můžete upravovat pomocí editoru Nano, nano ~/.bashrcnebo Visual Studio Code, kód ~/.bashrc.
~/.bashrc
~/.bash_aliases
~/.bash_profile
~/.bash_login
~/.profile
/etc/bash.bashrc
/etc/profile
Jak úplně odstranit Docker ze systému Windows?
- Odinstalujte systém Windows běžným způsobem
Aplikace a funkce panel.
- Odstraňte všechny níže uvedené položky, pokud existují:
C:Program FilesDocker
C:ProgramDataDockerDesktop
C:Users[USERNAME].docker
C:Users[USERNAME]AppDataLocalDocker
C:Users[USERNAME]AppDataRoamingDocker
C:Users[USERNAME]AppDataRoamingDocker Desktop
Co bude dál?
Nainstalujte si nejnovější verzi aplikace Docker Desktop Edge ze stránek zde a postupujte podle pokynů z oficiální dokumenty. Ve skutečnosti jde o několik kliknutí.
Pokud vše proběhne v pořádku, měli byste mít výstup ze systému wsl -l -v jako je tento:
NÁZEV STAV VERZE
Ubuntu-18.04 Běží 2
docker-desktop Běží 2
docker-desktop-data Běží 2
To je vše. Docker vytvořil vlastní kontejnery WSL docker-desktop a docker-desktop-data. Některé z dostupných návodů nebo rad mohou být matoucí, protože tentokrát. pod distribucí WSL Linux byste neměli instalovat ani konfigurovat nic, co souvisí s Dockerem.. Je velmi důležité mít na paměti. Po vyčištění by měl ihned dobře fungovat.
Navíc.
Nastavení WSL 2 pomocí nástroje Docker může být bezbolestný proces s několika jednoduchými kroky. Začněte aktualizací seznamy balíčků pomocí příkazu "sudo apt-get update", abyste se ujistili, že máte informace o nejnovější verzi. Případné chybějící závislosti vyřešte pomocí "sudo apt-get install -y build-essential" pro hladkou instalaci. Instalace Docker Engine s "sudo apt-get install -y docker-engine", abyste mohli snadno vytvářet, spouštět a spravovat kontejnery. Pro spuštění kontejnerů spusťte příkaz "sudo docker run" následovaný názvem obrazu. Chcete-li udržet své prostředí optimalizované, pravidelně spouštějte příkaz "sudo docker system prune", abyste odstranili nepoužívané kontejnery a uvolnili místo na disku. Díky těmto krokům můžete využívat bezproblémovou integraci WSL 2 a Dockeru pro efektivní kontejnerizaci v pracovním postupu vývoje.