Cose di cui si potrebbe fare a meno: Microsoft pubblica i container per WSL

I container sono Linux.

Non è una frase d’effetto o frutto della dedizione che la mia vita professionale e questo portale hanno nei confronti di Linux e del mondo open-source, ma è la pura verità. Il concetto di container per come lo conosciamo e per come ha letteralmente rivoluzionato il modo in cui vengono gestiti i workload sul cloud è basato su tre elementi principali: i namespace ed i CGroups del Kernel Linux e le immagini dei container, nient’altro che distribuzioni Linux gestite in archivi a livelli.

Tre elementi, un unico aspetto in comune: Linux, ed il suo Kernel.

Poi c’è Microsoft.

Da ormai un decennio sui sistemi Windows è possibile utilizzare WSL, ossia Windows Subsystem for Linux, la cui prima versione (WSL 1) è stata rilasciata nel 2016, seguita nel 2019 dalla più completa e utilizzabile WSL 2, che includeva addirittura un Kernel Linux reale.

Non una Virtual Machine, ma un vero e proprio sottosistema integrato che è cresciuto nel tempo tanto da veder supportato nientemeno che systemd, il cui supporto ufficiale è stato introdotto da Microsoft e Canonical nel 2022.

Chi mastica di queste cose avrà già capito: con un Kernel Linux e Systemd è automatico pensare, nel caso si vogliano erogare dei container, di installare Docker ed utilizzare i container esattamente come farebbe qualsiasi distribuzione Linux.

Non che chi scrive ci abbia mai provato, sia chiaro, ma è la realtà dei fatti, documentazione alla mano: si abilita systemd in WSL2 (creando/modificando /etc/wsl.conf con [boot]\nsystemd=true), si installa Docker Engine usando i comandi standard di Ubuntu ed infine si avvia il servizio Docker con sudo systemctl enable --now docker.

Da quel momento, tutti i comandi docker (come docker run, docker build) sono disponibili direttamente dal terminale di Ubuntu in WSL2.

Esattamente come si farebbe su un computer Linux nativo. Solo che poi, si diceva, arriva Microsoft, che ha deciso di introdurre i WSL container.

L’idea di base si fonda sull’aggiunta del comando nativo a WSL, wslc.exe, che permette di gestire i container Linux esattamente come si fa con Docker, ma senza dover installare nulla di aggiuntivo come qualunque utente Linux farebbe.

La funzionalità è attualmente in anteprima pubblica e per installarla è sufficiente aggiornare WSL alla versione pre-release più recente.

wsl --update --pre-release

Dopo l’aggiornamento e un riavvio di WSL sarà quindi disponibile la riga di comando wslc.

Il comando per eseguire un container è molto simile a quello di Docker. Per esempio, per avviare un container Debian interattivo:

wslc run -it debian:latest

Se l’immagine non è presente sul computer, wslc la scaricherà automaticamente dal registro (esatto, Docker Hub) e poi avvierà il container dando accesso a una shell interattiva al suo interno.

Quindi sì, nulla di diverso rispetto a quanto si farebbe per l’utilizzo normale dei container in Linux, ma hey, qui siamo in WSL!

Lasciamo ai vostri commenti il giudizio su questa nuova trovata, che entra di diritto nella rubrica “Cose di cui non si sentiva il bisogno“, che abbiamo aperto ad inizio giugno parlando delle Coreutils per Windows.

Qualcosa ci spinge a pensare che non sia finita qui, ed è probabile che presto ci troveremo a porci nuovamente l’inquietante domanda: “ma perché!?”.

Alla prossima!

Da sempre appassionato del mondo open-source e di Linux nel 2009 ho fondato il portale Mia Mamma Usa Linux! per condividere articoli, notizie ed in generale tutto quello che riguarda il mondo del pinguino, con particolare attenzione alle tematiche di interoperabilità, HA e cloud.
E, sì, mia mamma usa Linux dal 2009.

14 risposte a “Cose di cui si potrebbe fare a meno: Microsoft pubblica i container per WSL”

  1. Avatar Divago
    Divago

    E perché no? 🙂 Del resto anche macOS ha i container da Tahoe in poi 🙂 Sicuramente tornerà a utile a coloro che, per un motivo o un altro, utilizzano Windows a lavoro o anche a casa e non vogliono (o possono) avere una macchina con due sistemi operativi.

  2. Avatar mimmus
    mimmus

    Di recente, ho tolto di mezzo il pesantissimo Docker Desktop e l'ho rimpiazzato con Docker "normale" su WSL. E, fin qui, tutto OK.
    Il resto è opinabile ma è come le battaglie per i diritti: aggungerne di altri, non toglie nulla a chi godeva di quelli pre-esistenti!

  3. Avatar Raoul Scarazzini

    Ma perché non usare il Docker engine dentro a WSL allora? Perché questa duplicazione di tecnologie che producono l'effetto telefono senza fili?

  4. Avatar Divago
    Divago

    La domanda è più che legittima e la risposta potrebbe essere che docker è comunque un qualcosa di esterno da installare, mentre WSLC è nativo e integrato in WSL, quindi non bisogna installare niente se non WSL stesso.

  5. Avatar Raoul Scarazzini

    Può essere, sì. Così come potrebbe essere che si tratti di una modalità per dire "lo facciamo anche noi", punto. Un'affermazione. Un esercizio di stile. Un test che ha per base di utenti gli utenti WSL, che sono in costante crescita e che beneficiano del monopolio Microsoft…

  6. Avatar Raoul Scarazzini

    Infatti, secondo me, saper usare Docker "normale" ti rende cross-OS, indipendente e ti garantisce la capacità di portare il tuo lavoro ovunque con le stesse competenze.
    Questo Frankenstein crea solo frammentazione, ma è chiaro che, come dici tu, non inficia le tecnologie preesistenti.
    Crea solo entropia.
    Contenti loro…

  7. Avatar Divago
    Divago

    Sì, potrebbe essere anche quello. Il problema di Docker Desktop su Windows è che è parecchio grosso e pesante, anche in termini di risorse, e comunque necessita sempre per funzionare di WSL o di Hyper-V sotto il cofano per installare Linux insieme a tutto il resto necessario per il suo funzionamento. Ci vorrebbe un Docker CLI nativo per Windows, cosa che al momento non esiste, e quindi ecco WSLC.

  8. Avatar JaK
    JaK

    Con questo commento mi gioco il ban da MMUL, però devo dirlo!

    Il motivo è embrace! Extend! Estinguisg!

  9. Avatar hotrats
    hotrats

    Beh, un perché abbastanza esauriente penso lo trovi qui https://www.dday.it/redazione/57820/microsoft-ha-capito-che-non-puo-fare-a-meno-di-linux-se-vuole-portare-lia-dentro-windows . Un perché che fondamentalmente dà ragione al buon JaK qui sotto.
    Ciao 🙂

  10. Avatar diperdaniele
    diperdaniele

    eh magari un docker cli per windows che non avesse bisogno di WSL. Allo stato attuali installi docker cli sulla distro del wsl e fine

  11. Avatar Raoul Scarazzini

    ❤️❤️❤️

  12. Avatar darkcg
    darkcg

    Perchè crea frammentazione? E' un semplice frontend a containerd, esattamente come lo è docker. Tra l'altro mi sembra utilizzi proprio la sintassi dei Dockerfile per la build dei container. Quindi oltre che non frammentare nulla a me sembra una comodità in piu quando non si vuole installare Docker Desktop.

  13. Avatar darkcg
    darkcg

    Non sono d'accordo. Il "lo facciamo anche noi" lo fanno già con i Windows Containers. Questa è solo una CLI frontend a containerd, che per altro richiede comunque una distro Linux dentro a un'istanza WSL. E' comoda, perchè è integrata nel sistema operativo e rende Windows autonomo nel poter eseguire container Linux senza Docker. Linux con WSL c'era già, questo era un proseguio naturale.

  14. Avatar Raoul Scarazzini

    Quello che scrivi non mi risulta. Il fatto che usi le stesse immagini non implica che usi containerd. Non solo, wslc, da specifiche è una runtime a sé stante. Quindi non solo duplica docker, ma anche containerd. Ma se mi porti prove tecniche sono pronto a ricredermi.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *