GNU/Linux >> Linux Esercitazione >  >> Panels >> Docker

Docker su Windows? Inizia subito a imparare oppure...!

Se non conosci i contenitori e Docker e lavori principalmente su Windows, ti aspetta una sorpresa. In questo articolo imparerai come configurare Docker su Windows 10 utilizzando Docker Desktop per Windows o semplicemente denominato Docker Desktop in questo articolo.

Docker Desktop è il Docker Engine e un client di gestione in un pacchetto per un facile utilizzo in Windows 10. In questo articolo, installerai Docker Desktop, distribuirai il tuo primo container e condividerai i dati tra il tuo host e i tuoi container.

Prerequisiti per Docker su Windows

Questo è un articolo dettagliato che illustra vari passaggi in Docker Desktop per Docker in Windows. Per continuare, assicurati di avere prima alcuni requisiti specifici in atto.

  • Una connessione Internet per scaricare oltre 800 MB di dati
  • Windows 10 a 64 bit con versione Pro, Enterprise o Education con versione 1703 o successiva. Ciò è necessario per eseguire Hyper-V su Windows 10.
  • Una CPU con compatibilità SLAT (nested paging). Tutti i processori AMD/Intel dal 2008 circa sono compatibili SLAT
  • Almeno 4 GB di RAM
  • Virtualizzazione hardware BIOS a volte etichettata come Tecnologia di virtualizzazione o VTx . Deve essere abilitato e visualizzato come Abilitato nella scheda prestazioni di Task Manager come mostrato di seguito.

Download e installazione di Docker Desktop

Per prima cosa, devi scaricare e installare Docker Desktop per far funzionare Docker su Windows. Docker Desktop è disponibile in due versioni; una versione stabile e una versione di prova.

La versione stabile viene rilasciata trimestralmente e garantisce un'applicazione completamente testata. In questo articolo utilizzerai la versione stabile.

Avviso:al momento dell'installazione, Docker Desktop ti chiederà di installare l'hypervisor Hyper-V se non è già installato. In questo modo, l'hypervisor Hyper-V impedisce a qualsiasi hypervisor in modalità utente come VirtualBox, VMWare, ecc. di eseguire VM guest. Il supporto Hyper-V per VirtualBox e VMWare è limitato ma in arrivo.

Hai anche la possibilità di una fonte di download scaricando manualmente Docker Desktop direttamente da Docker.com o tramite il gestore di pacchetti di Windows, Chocolatey. Analizziamo brevemente ogni metodo.

Da Docker.com

Per scaricare Docker Desktop direttamente da docker.com, puoi andare alla pagina del prodotto, registrarti per un account e scaricarlo da lì. È preferibile se intendi utilizzare Docker in produzione registrando un account.

Tuttavia, se stai testando Docker per la prima volta, puoi anche scaricarlo direttamente, il che è molto più semplice.

Una volta scaricato l'EXE, esegui l'eseguibile e fai clic sui prompt accettando tutte le impostazioni predefinite.

Quando ti viene chiesto se intendi Utilizzare i contenitori Windows invece dei contenitori Linux , come mostrato di seguito, non abilitare la casella di controllo. Utilizzerai i container Linux in questo articolo.

Una volta completata l'installazione, riavvia il computer.

Selezionando l'opzione per utilizzare i contenitori Windows o Linux, Docker dice di allegare immagini a un kernel Windows o Linux. Puoi modificare questa impostazione in qualsiasi momento dopo l'installazione facendo clic con il pulsante destro del mouse sull'icona Docker nella barra delle applicazioni e selezionando Passa ai contenitori di Windows come mostrato di seguito.

Utilizzare Chocolatey

L'altra opzione per scaricare e installare Docker Desktop è con Chocolatey. Chocolatey automatizza per te molte delle attività di download/installazione. Per farlo, apri una console della riga di comando (cmd o PowerShell) come amministratore per scaricare e installare il programma in un colpo solo eseguendo il comando seguente.

choco install docker-desktop

Una volta completato, riavvia Windows 10.

Se a un certo punto desideri provare la versione di prova, puoi scaricarla e installarla eseguendo choco install docker-desktop --pre .

Convalida dell'installazione Docker Desktop

Una volta installato, Docker Desktop viene eseguito automaticamente come servizio che fornisce Docker su Windows. Viene mostrato nella barra delle applicazioni quando accedi a Windows dopo il riavvio. Ma come fai a sapere che sta funzionando?

Per verificare che Docker Desktop funzioni correttamente, apri una console della riga di comando ed esegui docker comando. Se l'installazione è andata a buon fine, vedrai un riferimento al comando Docker.

Infine, chiedi a Docker di scaricare ed eseguire un'immagine contenitore di esempio chiamata hello-world eseguendo il comando docker run hello-world . Se tutto va bene, vedrai un output come di seguito.

Esecuzione dei comandi nei contenitori Docker

Docker Desktop è installato e hai verificato che tutto va bene? E adesso? Per iniziare con Docker su Windows, un'attività comune da eseguire in un contenitore Docker è l'esecuzione dei comandi. Attraverso la docker run comando, puoi inviare comandi tramite l'host (il tuo PC Windows 10) direttamente in un contenitore in esecuzione.

Per eseguire comandi in un contenitore con docker run , devi prima specificare un nome di immagine seguito dal comando. Per iniziare, chiedi a Docker di eseguire il comando hostname all'interno di un container chiamato alpine come si vede di seguito.

> docker run alpine hostname
b74ff46601af

Dal momento che non hai l'alpino Immagine Docker sul tuo computer ora, Docker su Windows scaricherà la piccola immagine dal Docker Hub, aprirà un contenitore da quell'immagine e invierà il comando direttamente nel contenitore e lo spegnerà tutto in un colpo.

Se desideri mantenere in esecuzione il container, puoi anche utilizzare -it parametro. Questo parametro indica a Docker di mantenere il contenitore in "modalità interattiva" lasciandolo in esecuzione in primo piano dopo l'esecuzione del comando. Vedrai che ti verrà quindi presentato un messaggio di terminale pronto per l'uso.

> docker run -it alpine sh
/ #

Quando hai finito nel terminale, digita exit per tornare a Windows 10.

Accesso ai file dall'host Docker nei container

Un'altra attività comune è l'accesso ai file host dai contenitori. Per accedere ai file host nei contenitori, Docker su Windows ti consente di collegare un percorso di cartella dal desktop per condividere quella cartella nel contenitore. Questo processo è chiamato vincolo .

Per creare un'associazione, crea una cartella su un'unità locale. Per questo esempio userò E:\ e chiamalo input. Creerà quindi un nuovo documento di testo denominato file.txt nella cartella. Sentiti libero di usare qualsiasi percorso e file desideri.

Una volta che hai la cartella che desideri condividere tra l'host e il container, Docker deve montare la cartella utilizzando --mount parametro. Il --mount parametro richiede tre argomenti; un tipo di montaggio, un percorso di directory host di origine e un percorso di directory di destinazione. Il percorso di destinazione sarà un collegamento simbolico all'interno del contenitore.

Di seguito vedrai un esempio di montaggio dell'intero E:\ all'interno dell'host Windows 10 per essere visualizzato come /home/TEST directory all'interno del contenitore Linux.

> docker run --mount type=bind,source="E:/",target=/home/TEST -it alpine

Quando tenti di montare una cartella host, Docker Desktop ti chiederà l'autorizzazione per condividere questa unità con i contenitori Docker, come mostrato di seguito.

Se hai creato il file.txt file nella cartella Windows 10 come descritto in precedenza, esegui cat /home/TEST/input/file.txt . Vedrai che i contenuti vengono visualizzati.

Ora, elimina l'input cartella che hai appena creato ed esegui il cat ... comando di nuovo. Osserva che la shell ora segnala che il file non esiste più.

Mappatura delle porte di rete

Un altro concetto importante da sapere è come Docker su Windows gestisce la rete. Per una breve introduzione, vediamo cosa serve per accedere a un servizio Web in esecuzione in un container dall'host locale.

Innanzitutto, crea un'immagine demo che eseguirà una pagina Web di esempio. Scarica ed esegui l'immagine Docker denominata dockersamples/static-site . Utilizzerai docker container run per farlo.

Il comando seguente esegue quattro azioni contemporaneamente:

  • Scarica un'immagine Docker da Docker Hub denominata sito-statico nei campioni docker "directory"
  • Avvia un'istanza del contenitore dal sito-statico immagine
  • Stacca immediatamente il container dal primo piano del terminale (—detach )
  • Rende le porte di rete del contenitore in esecuzione accessibili all'host Windows 10 (—publish-all )
docker container run --detach --publish-all dockersamples/static-site
## Alternate/shorthand syntax that does the same thing:
## docker container run -d -P dockersamples/static-site
## docker run -d -P dockersamples/static-site

Una volta eseguito, Docker restituirà l'ID contenitore che è stato richiamato come mostrato di seguito.

Pubblicazione delle porte di rete

Da quando ho usato --publish-all parametro, le porte dell'host locale sono ora mappate allo stack di rete del container. Puoi usare il docker ps sottocomando per elencare tutti i container in esecuzione, comprese le porte assegnate a tutti i container in esecuzione. Nell'esempio seguente, un container esegue la mappatura della porta host 32777 alla porta del container 80 e della porta host 32776 alla porta del container 443.

Docker su Windows assegna porte casuali ai contenitori quando si utilizza il --publish-all parametro a meno che non li definisca esplicitamente.

Ora apri un browser web e vai a http://localhost:32777 o alla porta che Docker ha assegnato per mappare la porta 80 come output da docker ps . Se tutto va bene, dovresti vedere la pagina web qui sotto mostrata.

Modifica delle porte pubblicate

Ora hai un contenitore Docker in esecuzione in Docker su Windows che serve una semplice pagina Web. Congratulazioni! Ma ora devi specificare un'associazione di porta specifica che non si basa sulla selezione casuale della porta con --publish-all . Nessun problema. Usa il -p parametro.

Innanzitutto, arresta il contenitore in esecuzione specificando una stringa univoca del suo ID contenitore. Puoi trovare questo ID contenitore eseguendo docker ps . Una volta che conosci l'ID del container, interrompi il container e avviane uno nuovo mentre designi Docker per assegnare una porta specifica da pubblicare.

La sintassi per specificare una porta è <external port>:<container port> . Per ogni porta che vuoi pubblicare, usa --publish o -p passare con i numeri di porta esterna e del contenitore come mostrato di seguito.

> docker stop f766
> docker run --detach -p 1337:80 dockersamples/static-site

Quando specifichi un ID contenitore, devi solo digitare un numero sufficiente di ID per essere univoco. Se stai eseguendo un solo container e il suo ID è f766f4ac8d66bf7 , puoi identificare il contenitore utilizzando un numero qualsiasi di caratteri incluso solo f . Il requisito è che qualunque cosa digiti gli consenta di identificare in modo univoco un singolo contenitore.

Ora vai al tuo browser web e vai a localhost:1337 . Ricorda, non stai cambiando l'immagine e rimane sempre in ascolto sulla porta 80; stai modificando la regola di conversione delle porte nella configurazione Docker che ti consente di connetterti al container.

Arresto di tutti i container

Utilizzo di docker stop , puoi fermare un container, ma come fai a fermare più container contemporaneamente? Un modo per farlo è fornire più ID contenitore delimitati da spazi. Di seguito puoi vedere un esempio di come fermare tre contenitori con ID fd50b0a446e7 , 36ee57c3b7da e 7c45664906ff.

> docker stop fd50 36ee 7c45

Se gestisci i contenitori Docker in PowerShell, puoi anche utilizzare una scorciatoia per arrestare tutti i contenitori. Inserisci un elenco di ID contenitore tramite docker ps -q al parametro stop tramite l'espansione dei comandi di PowerShell docker stop (docker ps -q) .

Verifica che tutti i contenitori siano stati arrestati non vedendo alcun contenitore elencato quando digiti docker ps .

Pulizia

Hai scaricato alcune immagini di container ed eseguito alcuni container che ora sono stati interrotti. Anche se vengono interrotti, lo spazio di archiviazione allocato non viene eliminato dal disco host locale. Devi eliminare i contenitori per liberare quello spazio ed evitare di ingombrare il tuo spazio di lavoro.

Per eliminare un singolo contenitore, utilizza il contenitore remove rm parametro come di seguito.

> docker container rm <container ID>

Oppure, per eliminare tutti i contenitori interrotti, usa prune parametro come di seguito.

> docker container prune

Docker
  1. Inizia con NetworkManager su Linux

  2. Come iniziare con Juju?

  3. Creazione del primo contenitore di Windows Server Docker

  4. Inizia con i server cloud

  5. Imparare Perl, ma come ottengo 5.14 su Windows?

Tutorial Podman - Inizia con Podman

Introduzione a Docker Compose in Linux

Lxc e come iniziare?

Introduzione all'esercitazione Docker di Azure

Come ottenere l'indirizzo IP del contenitore Docker

Procedura:Introduzione a Windows Containers e Docker