Pristatydama "Windows" posistemę "Linux" (WSL), "Microsoft" suteikė kūrėjams galimybę paleisti GNU/Linux aplinką tiesiogiai "Windows" sistemoje, jos nemodifikuojant ir nenaudojant virtualios mašinos. Tai puikus sprendimas, nes daugelis kūrėjų vieną sistemą naudoja programavimui, o kitą - pramogoms.
WSL vis dar tobulinama, tačiau šiuo metu ji tinka šiuolaikinėms programinės įrangos kūrimas, tiek pirmojoje, tiek antrojoje versijoje. Peržiūrėjus internete pateiktas problemas ir klausimus, atrodo, kad dauguma jų yra susiję su WSL integravimu su "Docker", ypač kai reikia pereiti nuo WSL 1 prie WSL 2.
Šiame straipsnyje išsklaidysime visas dviprasmybes ir padėsime neskausmingai įveikti šį procesą. Jei neturite WSL 1 ir norite turėti WSL 2 su "Docker", galite pereiti tiesiai prie paskutinio skyriaus.
Ką laimėsite?
- Tikrasis naujausias stabilus "Linux" branduolys (suderintas "Microsoft"). WSL 1 turi su "Linux" suderinamą branduolio sąsają be "Linux" branduolio kodas.
- Padidintas failų IO našumas. Iki 20 kartų greičiau, palyginti su WSL 1, išpakuojant užpakuotą tarball, maždaug 2-5 kartus greičiau, kai naudojamas git klonas, npm įdiegti ir cmake įvairiuose projektuose.
- Visiškas sistemos skambučių suderinamumas. "Linux" dvejetainės programos naudoja sistemos skambučius daugeliui funkcijų atlikti, pvz., kreiptis į failus, prašyti atminties, kurti procesus ir kt. Nors WSL 1 naudojo vertimo sluoksnį, sukurtą WSL komanda, WSL 2 turi savo "Linux" branduolį su visišku suderinamumu su sistemos skambučiais.
- Failai, saugomi virtualiojo disko gimtajame ext4 skirsnyje.
- Labai paprastas būdas integruoti su "Docker".
Manau, kad daugumai naudotojų failų IO našumas ir lengva "Docker" integracija skamba kaip pakankamos priežastys.
Pirmyn!
Darau prielaidą, kad turite naujausią stabilią "Windows 10 Pro" versiją. Šiandien tai yra 1909 versija.
Prisijunkite prie "Windows" vidinių naudotojų
Šiuo metu ’WSL 2" galima naudoti tik "Windows 10" vidinių naudotojų lėtame žiede. Kiek žinau, stabili versija turėtų būti prieinama 2020 m. gegužę (20H1 versija). Lėtasis žiedas yra gana saugus sprendimas naudotojams, kurie nori turėti naujas funkcijas šiek tiek anksčiau, jau iš anksto išbandytas greitojo žiedo naudotojų. Lėtame žiede sistemos atnaujinimai gaunami iki vieno ar dviejų kartų per mėnesį. Apie vidinių leidinių pakeitimus galite perskaityti "Microsoft" dokumente, pavadintame Skrydžių centras.
Norėdami prisijungti, tiesiog sekite oficialią "Microsoft vadovas. Tai labai paprasta ir užtrunka apie 15 minučių, neprarandant jokių asmeninių duomenys.
WSL 1 atnaujinimas į WSL 2
Sekite oficialų vadovas. Tai taip pat labai paprasta, pora shell komandų ir štai jums! Priklausomai nuo to, kokia buvo jūsų "Linux" pagal WSL 1, tai gali užtrukti šiek tiek laiko. Deja, "Microsoft" nepateikė pažangos juostos ar informacijos apie reikiamą laiką, todėl tiesiog būkite kantrūs.
Valymas
Tai yra svarbiausia dalis, užtikrinanti tinkamą "WSL 2" ir "Docker" bendradarbiavimą. Atnaujinę WSL 2, daugelis naudotojų bando priversti savo "Docker" versiją bendradarbiauti nesuprasdami, kad "Docker team", specialiai skirta WSL 2, parengė versiją, kuri padarys viską, kad mus. Tai paskutinis “Docker Edge” versijos (jų beta pavadinimas) - "Docker Desktop WSL 2 backend" - išleidimas. Ši versija, 2.1.7.0, yra gerai nušlifuota ir yra būsimos stabilios versijos kandidatė.
Vartotojams, kurie neturėjo "WSL 1" arba ką tik įsidiegė naują "WSL 2" versiją, pasisekė ir jie gali iš karto pereiti prie paskutinio skyriaus.
Jei neišvalėte "Docker" (visiškai arba tinkamai) ir neįdiegėte tinkamos "Docker" versijos, skirtos WSL 2, galite susidurti su kai kuriomis įprastomis klaidomis, pvz, Cannot connect to the Docker daemon at tcp://localhost:2375“, “Is the Docker daemon running, ir t. t. Daugeliu atvejų prarasite laiko, jei nežinosite, kad bandydami išspręsti šias klaidas turite laikytis naujo požiūrio. Norėdami tai padaryti, pirmiausia turite visiškai pašalinti "Docker" iš WSL ir "Windows", o tai nėra akivaizdus žingsnis.
Dažniausias nepašalintų liekanų pavyzdys yra senasis "Docker" metodas, kai nustatomas aplinkos kintamasis DOCKER_HOST=tcp://localhost:2375 pagal WSL 1 bendradarbiaujant su "Windows Docker" parinktimi Demono eksponavimas tcp://localhost:2375 be TLS.
Kaip visiškai pašalinti "Docker" iš WSL (Ubuntu)?
- Kaip oficialus "Docker dokumentai sakyti:
sudo apt-get remove docker docker-engine docker.io containerd runc
Šį sąrašą tikrai galite papildyti docker-ce ir docker-ce-cli.
- Nustatykite visus "Docker" paketus, kuriuos turite su
dpkg -l | grep -i docker ir pašalinkite, jei tokių vis dar yra.
- Pašalinkite visus likučius:
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
- Šis veiksmas skirtas pažengusiems naudotojams, todėl būkite atsargūs. Tikriausiai jums nereikia jo atlikti.
Rasti visus "docker" žodžių pasikartojimus ir pašalinkite tuos, dėl kurių esate tikri.
sudo find / -name “*docker*”
- Patikrinkite visų toliau pateiktų failų turinį
"docker" įvykiai, pvz., aplinkos kintamasis DOCKER_HOST=tcp://localhost:2375.
Šiuos failus galite redaguoti naudodami "Nano" redaktorių, nano ~/.bashrc, arba "Visual Studio Code", kodas ~/.bashrc.
~/.bashrc
~/.bash_aliases
~/.bash_profile
~/.bash_login
~/.profile
/etc/bash.bashrc
/etc/profile
Kaip visiškai pašalinti "Docker" iš "Windows"?
- Pašalinti įprastu būdu naudojant "Windows
Programėlės ir funkcijos panelė.
- Pašalinkite visus toliau nurodytus elementus, jei tokių yra:
C:Program FilesDocker
C:ProgramosDataDockerDesktop
C:Users[USERNAME].docker
C:Users[USERNAME]AppDataLocalDocker
C:Users[USERNAME]AppDataRoamingDocker
C:Users[USERNAME]AppDataRoamingDocker Desktop
Kas toliau?
Įdiekite naujausią "Docker Desktop Edge" versiją iš čia ir atlikite oficialioje dokumentai. Iš tikrųjų tereikia kelių paspaudimų.
Jei viskas vyksta gerai, turėtumėte gauti išvestį iš wsl -l -v panašiai:
PAVADINIMAS BŪSENA VERSIJA
Ubuntu-18.04 Bėga 2
docker-desktop Vykdoma 2
docker-desktop-data Vykdoma 2
Tai viskas. "Docker" sukūrė savo WSL konteinerius docker-desktop ir docker-desktop-data. Kai kurie turimi vadovėliai ar patarimai gali būti painūs, nes šį kartą neturėtumėte diegti ar konfigūruoti nieko, kas susiję su "Docker", savo WSL "Linux" distribucijoje.. Labai svarbu prisiminti. Po valymo jis turėtų iš karto gerai veikti.
Be to.
"WSL 2" nustatymas naudojant "Docker" gali būti nesudėtingas procesas, atliekamas keliais paprastais veiksmais. Pradėkite atnaujindami paketų sąrašai naudodami komandą “Sudo apt-get update”, kad įsitikintumėte, jog turite naujausios versijos informaciją. Išspręskite bet kokias trūkstamas priklausomybes naudodami “Sudo apt-get install -y build-essential”, kad diegimas būtų sklandus. Įdiekite "Docker" variklis su “Sudo apt-get install -y docker-engine”, kad galėtumėte lengvai kurti, paleisti ir valdyti konteinerius. Norėdami paleisti konteinerius, atlikite “sudo docker run”, po kurio įrašykite atvaizdo pavadinimą. Kad aplinka būtų optimizuota, periodiškai paleiskite “sudo docker system prune”, kad pašalintumėte nenaudojamus konteinerius ir atlaisvintumėte vietos diske. Atlikę šiuos veiksmus galite mėgautis sklandžia WSL 2 ir "Docker" integracija, kad galėtumėte efektyviai naudoti konteinerius kūrimo procese.