Checkpoint
Publish your container image to Container Registry
/ 100
Introduzione a Docker
GSP055
Panoramica
Docker è una piattaforma aperta per lo sviluppo, la distribuzione e l'esecuzione di applicazioni. Con Docker puoi separare le tue applicazioni dalla tua infrastruttura e trattare la tua infrastruttura come un'applicazione gestita. Docker ti aiuta a distribuire, testare ed eseguire il deployment del codice più velocemente e a ridurre il ciclo tra scrittura ed esecuzione del codice.
Per farlo combina le funzionalità di containerizzazione dei kernel con flussi di lavoro e strumenti che ti aiutano a gestire le tue applicazioni e a eseguirne il deployment.
I container Docker possono essere utilizzati direttamente in Kubernetes, il che consente di eseguirli facilmente in Kubernetes Engine. Dopo aver appreso gli elementi essenziali di Docker, avrai le competenze per iniziare a sviluppare applicazioni Kubernetes e containerizzate.
Obiettivi
In questo lab, imparerai a:
- Creare ed eseguire container Docker ed eseguirne il debug.
- Eseguire il pull delle immagini Docker da Docker Hub e Google Artifact Registry.
- Eseguire il push delle immagini Docker in Google Artifact Registry.
Prerequisiti
Si tratta di un lab di livello base. È adatto a chi ha poca o nessuna esperienza con Docker e i container. Suggeriamo, ma non è obbligatoria, esperienza con la riga di comando e Cloud Shell.
Configurazione e requisiti
Prima di fare clic sul pulsante Avvia lab
Leggi le seguenti istruzioni. I lab sono a tempo e non possono essere messi in pausa. Il timer si avvia quando fai clic su Avvia lab e ti mostra per quanto tempo avrai a disposizione le risorse Google Cloud.
Con questo lab pratico avrai la possibilità di completare le attività in prima persona, in un ambiente cloud reale e non di simulazione o demo. Riceverai delle nuove credenziali temporanee che potrai utilizzare per accedere a Google Cloud per la durata del lab.
Per completare il lab, avrai bisogno di:
- Accesso a un browser internet standard (Chrome è il browser consigliato).
- È ora di completare il lab: ricorda che, una volta iniziato, non puoi metterlo in pausa.
Come avviare il lab e accedere alla console Google Cloud
-
Fai clic sul pulsante Avvia lab. Se devi effettuare il pagamento per il lab, si apre una finestra popup per permetterti di selezionare il metodo di pagamento. A sinistra, trovi il riquadro Dettagli lab con le seguenti informazioni:
- Il pulsante Apri console Google Cloud
- Tempo rimanente
- Credenziali temporanee da utilizzare per il lab
- Altre informazioni per seguire questo lab, se necessario
-
Fai clic su Apri console Google Cloud (o fai clic con il tasto destro del mouse e seleziona Apri link in finestra di navigazione in incognito se utilizzi il browser Chrome).
Il lab avvia le risorse e apre un'altra scheda con la pagina di accesso.
Suggerimento: disponi le schede in finestre separate posizionate fianco a fianco.
Nota: se visualizzi la finestra di dialogo Scegli un account, fai clic su Usa un altro account. -
Se necessario, copia il Nome utente di seguito e incollalo nella finestra di dialogo di accesso.
{{{user_0.username | "Username"}}} Puoi trovare il Nome utente anche nel riquadro Dettagli lab.
-
Fai clic su Avanti.
-
Copia la Password di seguito e incollala nella finestra di dialogo di benvenuto.
{{{user_0.password | "Password"}}} Puoi trovare la Password anche nel riquadro Dettagli lab.
-
Fai clic su Avanti.
Importante: devi utilizzare le credenziali fornite dal lab. Non utilizzare le credenziali del tuo account Google Cloud. Nota: utilizzare il tuo account Google Cloud per questo lab potrebbe comportare addebiti aggiuntivi. -
Fai clic nelle pagine successive:
- Accetta i termini e le condizioni.
- Non inserire opzioni di recupero o l'autenticazione a due fattori, perché si tratta di un account temporaneo.
- Non registrarti per le prove gratuite.
Dopo qualche istante, la console Google Cloud si apre in questa scheda.
Attiva Cloud Shell
Cloud Shell è una macchina virtuale in cui sono caricati strumenti per sviluppatori. Offre una home directory permanente da 5 GB e viene eseguita su Google Cloud. Cloud Shell fornisce l'accesso da riga di comando alle risorse Google Cloud.
- Fai clic su Attiva Cloud Shell nella parte superiore della console Google Cloud.
Quando la connessione è attiva, l'autenticazione è già avvenuta e il progetto è impostato sul tuo PROJECT_ID. L'output contiene una riga che dichiara il PROJECT_ID per questa sessione:
gcloud
è lo strumento a riga di comando di Google Cloud. È preinstallato su Cloud Shell e supporta il completamento tramite tasto Tab.
- (Facoltativo) Puoi visualizzare il nome dell'account attivo con questo comando:
-
Fai clic su Autorizza.
-
L'output dovrebbe avere ora il seguente aspetto:
Output:
- (Facoltativo) Puoi elencare l'ID progetto con questo comando:
Output:
Output di esempio:
gcloud
, in Google Cloud, fai riferimento alla Panoramica dell'interfaccia a riga di comando gcloud.
Attività 1: Hello World
- In Cloud Shell inserisci questo comando per eseguire un container Hello World per iniziare:
(Output comando)
Questo semplice container restituisce Hello from Docker!
sul tuo schermo. Sebbene il comando sia semplice, osserva nell'output il numero di passaggi eseguiti. Il daemon Docker ha cercato l'immagine Hello World, non l'ha trovata in locale, ha eseguito il pull dell'immagine da un registro pubblico chiamato Docker Hub, ha creato un container dall'immagine e ha eseguito il container per conto tuo.
- Esegui questo comando per esaminare l'immagine container di cui è stato eseguito il pull da Docker Hub:
(Output comando)
Questa è l'immagine di cui è stato eseguito il pull dal registro pubblico Docker Hub. L'ID immagine è nel formato hash SHA256: questo campo specifica l'immagine Docker di cui è stato effettuato il provisioning. Quando il daemon Docker non riesce a trovare un'immagine in locale, per impostazione predefinita la cercherà nel registro pubblico.
- Esegui di nuovo il container:
(Output comando)
Nota che la seconda volta che esegui il comando, il daemon Docker trova l'immagine nel registro locale ed esegue il container da quell'immagine. Non è necessario eseguire il pull dell'immagine da Docker Hub.
- Infine, esamina i container in esecuzione eseguendo questo comando:
(Output comando)
Non ci sono container in esecuzione. Hai già effettuato l'uscita dai container Hello World eseguiti in precedenza.
- Per vedere tutti i container, compresi quelli già eseguiti, utilizza il comando
docker ps -a
:
(Output comando)
Viene visualizzato Container ID
, un UUID generato da Docker per identificare il container e altri metadati sull'esecuzione. Anche gli oggetti Names
del container vengono generati in modo casuale, ma possono essere specificati con docker run --name [container-name] hello-world
.
Attività 2: crea
In questa sezione creerai un'immagine Docker basata su un'applicazione node semplice.
- Esegui questo comando per creare e passare a una cartella denominata
test
.
- Crea un
Dockerfile
:
Questo file fornisce istruzioni al daemon Docker su come creare la tua immagine.
- La prima riga specifica l'immagine padre di base, che in questo caso è l'immagine Docker ufficiale per l'assistenza a lungo termine della versione di node (lts).
- Nella seconda, imposti la directory (attuale) di lavoro del container.
- Nella terza, aggiungi il contenuto della directory attuale (indicato da
"."
) al container. - Quindi esponi la porta del container in modo che possa accettare connessioni su quella porta e infine esegui il comando node per avviare l'applicazione.
Dockerfile
. Ora scriverai l'applicazione node e successivamente creerai l'immagine.
- Esegui questo comando per creare l'applicazione node:
Questo è un semplice server HTTP che ascolta sulla porta 80 e restituisce "Hello World".
Ora crea l'immagine.
- Osserva di nuovo
"."
, che indica la directory attuale, quindi devi eseguire questo comando dalla directory che contiene il Dockerfile:
L'esecuzione di questo comando potrebbe richiedere un paio di minuti. Al termine, l'output dovrebbe essere simile al seguente:
-t
serve per nominare e taggare un'immagine con la sintassi name:tag
. Il nome dell'immagine è node-app
e il tag
è 0.1
. Il tag è altamente consigliato durante la creazione di immagini Docker. Se non specifichi un tag, verrà impostato automaticamente latest
e sarà più difficile distinguere le immagini più recenti da quelle più vecchie. Nota inoltre che ogni riga nel Dockerfile
sopra genera livelli container intermedi man mano che l'immagine viene creata.
- Ora esegui questo comando per esaminare le immagini che hai creato:
L'output dovrebbe essere simile al seguente:
Nota che node
è l'immagine di base e node-app
è l'immagine che hai creato. Non puoi rimuovere node
senza prima rimuovere node-app
. La dimensione dell'immagine è relativamente piccola rispetto alle VM. Altre versioni dell'immagine node come node:slim
e node:alpine
possono offrirti immagini ancora più piccole per una più facile portabilità. La riduzione delle dimensioni dei container viene approfondita in Argomenti avanzati. Puoi visualizzare tutte le versioni nel repository ufficiale nella sezione node.
Attività 3: esegui
- Utilizza questo codice per eseguire container in base all'immagine che hai creato:
(Output comando)
Il flag --name
ti consente di assegnare un nome al container, se vuoi. -p
indica a Docker di mappare la porta 4000 dell'host alla porta 80 del container. Ora puoi raggiungere il server all'indirizzo http://localhost:4000
. Senza la mappatura della porta, non saresti in grado di raggiungere il container su localhost.
- Apri un altro terminale (in Cloud Shell fai clic sull'icona
+
) e testa il server:
(Output comando)
Il container verrà eseguito finché è in esecuzione il terminale iniziale. Se vuoi che il container venga eseguito in background (non vincolato alla sessione del terminale), devi specificare il flag -d
.
- Chiudi il terminale iniziale ed esegui questo comando per arrestare e rimuovere il container:
- Ora esegui questo comando per avviare il container in background:
(Output comando)
- Nota che il container è in esecuzione nell'output di
docker ps
. Puoi esaminare i log eseguendodocker logs [container_id]
.
docker logs 17b
se l'ID container è 17bcaca6f....
(Output comando)
Ora modifica l'applicazione.
- In Cloud Shell apri la directory di test creata in precedenza nel lab:
- Modifica
app.js
con un editor di testo di tua scelta (ad esempio nano o vim) e sostituisci "Hello World" con un'altra stringa:
- Crea questa nuova immagine e taggala con
0.2
:
(Output comando)
Nota nel passaggio 2 che stai utilizzando un livello di cache esistente. Dal passaggio 3 in poi, i livelli vengono modificati perché hai apportato una modifica in app.js
.
- Esegui un altro container con la nuova versione dell'immagine. Nota come viene mappata la porta 8080 dell'host anziché la porta 80. Non puoi utilizzare la porta 4000 dell'host perché è già in uso.
(Output comando)
- Testa i container:
(Output comando)
- E ora testa il primo container che hai creato:
(Output comando)
Attività 4: esegui il debug
Ora che hai familiarità con la creazione e l'esecuzione dei container, esamina alcune pratiche di debug.
- Puoi esaminare i log di un container utilizzando
docker logs [container_id]
. Se vuoi seguire l'output del log mentre il container è in esecuzione, utilizza l'opzione-f
.
(Output comando)
A volte potresti voler avviare una sessione Bash interattiva all'interno del container in esecuzione.
- Per farlo, puoi usare
docker exec
. Apri un altro terminale (in Cloud Shell fai clic sull'icona +) e testa il server:
I flag -it
ti consentono di interagire con un container allocando uno pseudo-TTY e mantenendo stdin aperto. Nota che bash è stato eseguito nella directory (/app) WORKDIR
specificata nel Dockerfile
. Da qui, hai una sessione di shell interattiva all'interno del container di cui eseguire il debug.
(Output comando)
- Osserva la directory
(Output comando)
- Esci dalla sessione Bash:
- Puoi esaminare i metadati di un container in Docker utilizzando docker inspect:
(Output comando)
- Utilizza
--format
per ispezionare campi specifici del file JSON restituito. Ad esempio:
(Output di esempio)
Per ulteriori informazioni sul debug, consulta le seguenti risorse della documentazione di Docker:
Attività 5: pubblica
Ora eseguirai il push della tua immagine in Google Artifact Registry. Dopodiché rimuoverai tutti i container e le immagini per simulare un nuovo ambiente, quindi eseguirai il pull dei container e li eseguirai. Ciò dimostrerà la portabilità dei container Docker.
Per eseguire il push delle immagini nel tuo registro privato ospitato da Artifact Registry, devi taggare le immagini con un nome di registro. Il formato è <regional-repository>-docker.pkg.dev/my-project/my-repo/my-image
.
Crea il repository Docker di destinazione (utilizzando la console Cloud)
Prima di eseguire il push delle immagini, devi creare il repository di destinazione. Il push di un'immagine non può attivare la creazione di un repository e l'account di servizio Cloud Build non dispone delle autorizzazioni per creare repository.
-
Dal Menu di navigazione, sotto CI/CD vai ad Artifact Registry > Repository.
-
Fai clic sull'icona +CREA REPOSITORY accanto a Repository.
-
Specifica
my-repository
come nome del repository. -
Scegli Docker come formato.
-
In Tipo di località, seleziona Regione, quindi scegli la località
. -
Fai clic su Crea.
Configura l'autenticazione
Prima di eseguire il push o il pull delle immagini, configura Docker in modo che utilizzi Google Cloud CLI per autenticare le richieste ad Artifact Registry.
- Per configurare l'autenticazione nei repository Docker della regione
, esegui questo comando in Cloud Shell:
- Quando richiesto, inserisci
Y
.
Il comando aggiorna la configurazione Docker. Ora puoi connetterti con Artifact Registry nel tuo progetto Google Cloud per eseguire il push e il pull delle immagini.
Crea un repository Artifact Registry (utilizzando l'interfaccia a riga di comando)
- Esegui questi comandi per creare un repository Artifact Registry.
Esegui il push del container in Artifact Registry
- Passa alla directory con il tuo Dockerfile.
- Esegui il comando per inserire il tag
node-app:0.2
.
- Esegui questo comando per controllare le immagini Docker create.
(Output comando)
- Esegui il push dell'immagine in Artifact Registry.
Output comando (il tuo potrebbe essere diverso):
-
Una volta completato il push, dal Menu di navigazione, sotto CI/CD vai ad Artifact Registry > Repository.
-
Fai clic su my-repository. Dovresti vedere il container Docker
node-app
creato:
Testa l'immagine
Potresti avviare una nuova VM, accedervi tramite SSH e installare gcloud. Per semplicità, rimuovi tutti i container e le immagini per simulare un nuovo ambiente.
- Arresta e rimuovi tutti i container:
Devi rimuovere le immagini figlio (di node:lts
) prima di rimuovere l'immagine node.
- Esegui questo comando per rimuovere tutte le immagini Docker.
(Output comando)
A questo punto dovresti avere un ambiente pseudo-nuovo.
- Esegui il pull dell'immagine, quindi eseguila.
- Esegui un comando curl sul container in esecuzione.
(Output comando)
Verifica l'attività completata
Fai clic su Controlla i miei progressi per verificare l'attività eseguita. Se hai pubblicato un'immagine container in Artifact Registry, vedrai un punteggio di valutazione.
Qui viene mostrata la portabilità dei container. Finché Docker è installato sull'host (on-premise o VM), può eseguire il pull delle immagini da registri pubblici o privati ed eseguire i container in base a questa immagine. Non ci sono dipendenze dell'applicazione che devono essere installate sull'host ad eccezione di Docker.
Complimenti!
Complimenti! In questo lab hai svolto varie attività pratiche, inclusa l'esecuzione di container in base a immagini pubbliche da Docker Hub. Hai anche creato immagini container e ne hai eseguito il push in Google Artifact Registry. Inoltre, il lab ti ha fornito le competenze per eseguire efficacemente il debug dei container in esecuzione. Infine, hai acquisito esperienza nell'esecuzione di container in base a immagini estratte da Google Artifact Registry, migliorando la tua comprensione e conoscenza di Docker.
Prossimi passi/Scopri di più
- Riferimento Dockerfile
- Docker Hub
- Scopri di più su Docker nella documentazione ufficiale
- Documentazione di Artifact Registry
Formazione e certificazione Google Cloud
… per utilizzare al meglio le tecnologie Google Cloud. I nostri corsi ti consentono di sviluppare competenze tecniche e best practice per aiutarti a metterti subito al passo e avanzare nel tuo percorso di apprendimento. Offriamo vari livelli di formazione, dal livello base a quello avanzato, con opzioni di corsi on demand, dal vivo e virtuali, in modo da poter scegliere il più adatto in base ai tuoi impegni. Le certificazioni ti permettono di confermare e dimostrare le tue abilità e competenze relative alle tecnologie Google Cloud.
Ultimo aggiornamento del manuale: 29 febbraio 2024
Ultimo test del lab: 29 febbraio 2024
Copyright 2024 Google LLC Tutti i diritti riservati. Google e il logo Google sono marchi di Google LLC. Tutti gli altri nomi di società e prodotti sono marchi delle rispettive società a cui sono associati.