Introduzione al contenitore WSL

Questa guida dettagliata consente di iniziare a creare ed eseguire contenitori Linux in Windows usando wslc.exe, l'interfaccia della riga di comando dei contenitori incorporata con WSL.

wslc.exe fornisce un'interfaccia della riga di comando familiare per la compilazione, la spedizione e l'esecuzione di app in contenitori.

Panoramica dei contenitori WSL

Un contenitore è uno strumento usato per creare, distribuire ed eseguire applicazioni. I contenitori consentono agli sviluppatori di creare un pacchetto di un'app con tutte le parti necessarie (librerie, framework, dipendenze e così via) e spedirlo come un unico pacchetto. L'uso di un contenitore garantisce che l'app esegua la stessa operazione indipendentemente dalle impostazioni personalizzate o dalle librerie installate in precedenza nel computer che lo esegue che potrebbe differire dal computer usato per scrivere e testare il codice dell'app. Ciò consente agli sviluppatori di concentrarsi sulla scrittura di codice senza preoccuparsi del sistema in cui verrà eseguito il codice.

Prerequisiti

  • WSL è stato installato. Eseguire wsl --update per assicurarsi di avere la versione più recente.
  • Installare Visual Studio Code(facoltativo).Install Visual Studio Code(optional). In questo modo sarà disponibile la migliore esperienza, inclusa la possibilità di scrivere codice ed eseguire il debug dei progetti in contenitori connessi alla distribuzione Linux.
  • Installare Terminale Windows(facoltativo).Install Terminale Windows(optional). In questo modo sarà disponibile la migliore esperienza, inclusa la possibilità di personalizzare e aprire più terminali nella stessa interfaccia (tra cui Ubuntu, Debian, PowerShell, interfaccia della riga di comando di Azure o qualsiasi altra opzione che si preferisce usare).

Installare e verificare wslc

wslc.exe è incluso in WSL, quindi non esiste un motore separato da installare. Per assicurarsi di avere una versione di WSL che la include:

  1. Installare WSL se non è già stato fatto, quindi eseguire l'aggiornamento alla versione più recente aprendo PowerShell e immettendo:

    wsl --update
    
  2. Verificare che wslc.exe sia disponibile e controllarne la versione immettendo:

    wslc version
    
  3. Verifica che tutto funzioni correttamente eseguendo una semplice immagine integrata. L'immagine viene estratta automaticamente se non è già presente in locale:

    wslc run --rm hello-world
    

    Verrà visualizzato un messaggio "Hello" che conferma che l'installazione sembra funzionare correttamente.

Suggerimento

Ecco alcuni comandi utili wslc da conoscere:

  • Elencare i comandi disponibili nell'interfaccia della wslc riga di comando immettendo: wslc --help
  • Elencare le informazioni per un comando specifico con: wslc <COMMAND> --help
  • Elencare le immagini nel computer con: wslc image list
  • Elenca i contenitori in esecuzione sul tuo computer con: wslc container list oppure elenca tutti i contenitori (inclusi quelli fermati) con: wslc container list --all
  • Visualizzare le statistiche di utilizzo delle risorse per i contenitori in esecuzione, con: wslc stats

Avvia i tuoi primi container

Con wslc.exe è possibile scaricare le immagini, avviare i container in primo piano o in background, pubblicare le porte e interagire con i container in esecuzione. Provare alcuni di questi comandi da PowerShell:

# Run a command in a throwaway container
wslc run --rm -it ubuntu:latest bash -c "echo Hello world from WSL container!"

# Run a web server in the background and publish port 8080 to the container's port 80
wslc run -d --rm -p 8080:80 --name web nginx

# Request content from the running web server
curl localhost:8080

# List the running container
wslc container list

# Run an additional command inside the running container
wslc exec web cat /etc/os-release

# Stop the container
wslc container stop web

Poiché il nginx contenitore è stato avviato con --rm, viene rimosso automaticamente dopo l'arresto.

Compilare ed eseguire un'immagine del contenitore personalizzata

Per iniziare a sviluppare app con wslc.exe, è consigliabile usare VS Code, insieme all'estensione WSL , in modo da poter modificare il progetto nel file system Linux ed eseguire wslc comandi dal terminale integrato.

Creiamo un'immagine container per un progetto di app esistente.

  1. Per questo esempio si userà il codice sorgente dell'esercitazione Hello World per Django nella documentazione di configurazione dell'ambiente di sviluppo Python. È possibile ignorare questo passaggio se si preferisce usare il proprio codice sorgente del progetto. Per scaricare l'app Web HelloWorld-Django da GitHub, aprire un terminale WSL (ad esempio Ubuntu) e immettere:

    git clone https://github.com/<username>/helloworld-django.git
    

    Annotazioni

    Archiviare sempre il codice nello stesso file system in cui si usano gli strumenti. Ciò comporterà prestazioni di accesso ai file più veloci. In questo esempio si usa una distribuzione Linux (Ubuntu) e si vogliono archiviare i file di progetto nel file system \\wsl$WSL . L'archiviazione dei file di progetto nel file system Windows rallenta notevolmente quando si usano gli strumenti Linux in WSL per accedere a tali file.

  2. Dal terminale WSL passare alla cartella del codice sorgente per questo progetto:

    cd helloworld-django
    
  3. Aprire il progetto in VS Code in esecuzione nel server di estensione WSL locale immettendo:

    code .
    

    Verificare di essere connessi alla distribuzione di WSL Linux controllando l'indicatore remoto verde nell'angolo inferiore sinistro dell'istanza di VS Code.

    Indicatore remoto WSL di VS Code

  4. Aggiungere un oggetto Containerfile alla radice del progetto che descrive come compilare l'immagine. Per l'esempio Django, un valore minimo Containerfile potrebbe essere simile al seguente:

    FROM python:3
    WORKDIR /app
    COPY requirements.txt .
    RUN pip install --no-cache-dir -r requirements.txt
    COPY . .
    EXPOSE 8000
    CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
    
  5. Dalla cartella del progetto (la directory contenente Containerfile), compilare l'immagine con wslc build, contrassegnandola con un nome a cui è possibile fare riferimento in un secondo momento:

    wslc build -t helloworld-django .
    
  6. Verificare che l'immagine sia stata creata elencando le immagini:

    wslc image list
    
  7. Eseguire l'immagine appena compilata come contenitore, pubblicando la porta dell'app in modo da poterla raggiungere da Windows:

    wslc run -d --rm -p 8000:8000 --name django helloworld-django
    
  8. Per verificare che il contenitore sia in esecuzione, elencare i contenitori in esecuzione e controllarne i log:

    wslc container list
    wslc container logs django
    
  9. Apri un browser su Windows e vai a http://localhost:8000/ per vedere l'app in esecuzione all'interno del contenitore. È anche possibile verificare che l'app sia in esecuzione in Linux eseguendo un comando all'interno del contenitore:

    wslc exec django uname
    

    Il uname risultato di "Linux" conferma che il contenitore è in esecuzione nel kernel WSL 2 Linux.

  10. Quando hai finito, ferma il contenitore:

    wslc container stop django
    

È stato creato ed eseguito correttamente un contenitore Linux in Windows usando wslc.exe, basato su WSL 2, che è possibile compilare, eseguire, distribuire o eseguire il debug insieme a VS Code.

Risoluzione dei problemi

Esaminare un contenitore o un'immagine

Quando un contenitore si comporta in modo imprevisto, i inspect comandi e logs forniscono informazioni dettagliate per diagnosticare il problema:

wslc container inspect <container-id>
wslc container logs <container-id>
wslc image inspect <image>

Recuperare spazio su disco

Le immagini e i contenitori arrestati consumano spazio su disco. Per pulire le risorse che non si usano più:

# Remove all stopped containers
wslc container prune

# Remove unused images
wslc image prune

Per altre informazioni sulla risoluzione dei problemi generali in WSL, vedere la documentazione sulla risoluzione dei problemi .

Risorse aggiuntive