Prima di iniziare
- Se non hai dimestichezza con i contenitori, leggi l'articolo Contenitori su Compute Engine.
- Se non hai dimestichezza con Docker, leggi la documentazione di Docker.
- Scopri di più sul deployment dei container su Compute Engine.
-
Se non l'hai già fatto, configura l'autenticazione.
L'autenticazione è la procedura mediante la quale la tua identità viene verificata per l'accesso alle API e ai servizi Google Cloud.
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine come segue.
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
Vai alla pagina Crea un modello di istanza.
Nella sezione Contenitore, seleziona Esegui il deployment di un'immagine container per. questa casella di controllo di questa istanza VM ed espandi Opzioni container avanzate.
- In Google Cloud CLI, utilizza
gcloud compute instance-templates create-with-container
come mostrato nei seguenti esempi. Vai alla pagina Crea un'istanza.
Nella sezione Contenitore, fai clic su Esegui il deployment del contenitore.
Nella pagina Configura contenitore, segui questi passaggi:
- Specifica un nome per l'immagine container.
- Nella sezione Criterio di riavvio, seleziona il criterio di riavvio per containerizzato.
- Per confermare i dettagli del contenitore, fai clic su Seleziona.
Continua con la procedura di creazione della VM.
always
(valore predefinito)on-failure
never
Vai alla pagina Crea un'istanza.
Nella sezione Contenitore, fai clic su Esegui il deployment del contenitore.
Nella pagina Configura contenitore, segui questi passaggi:
- Specifica un nome per l'immagine container.
- Seleziona Esegui con privilegi.
- Per confermare i dettagli del contenitore, fai clic su Seleziona.
Continua con la procedura di creazione della VM.
Vai alla pagina Crea un'istanza.
Nella sezione Contenitore, fai clic su Esegui il deployment del contenitore.
Nella pagina Configura contenitore, segui questi passaggi:
- Specifica un nome per l'immagine container.
- Seleziona Alloca un buffer per STDIN.
- Per confermare i dettagli del contenitore, fai clic su Seleziona.
Continua con la procedura di creazione della VM.
Vai alla pagina Crea un'istanza.
Nella sezione Contenitore, fai clic su Esegui il deployment del contenitore.
Nella pagina Configura contenitore, segui questi passaggi:
- Specifica un nome per l'immagine container.
- Seleziona Alloca uno pseudo-TTY.
- Per confermare i dettagli del contenitore, fai clic su Seleziona.
Continua con la procedura di creazione della VM.
Vai alla pagina Crea un'istanza.
Nella sezione Contenitore, fai clic su Esegui il deployment del contenitore.
Nella pagina Configura contenitore, segui questi passaggi:
- Specifica un nome per l'immagine container.
- Nel campo Comando, inserisci un singolo comando eseguibile senza parametri, ad esempio
uptime
. - Per confermare i dettagli del contenitore, fai clic su Seleziona.
Continua con la procedura di creazione della VM.
Vai alla pagina Crea un'istanza.
Nella sezione Contenitore, fai clic su Esegui il deployment del contenitore.
Nella pagina Configura contenitore, segui questi passaggi:
- Specifica un nome per l'immagine container.
- Nella sezione Argomenti, fai clic su Aggiungi argomento.
- Inserisci un argomento del comando per ogni casella.
- Per confermare i dettagli del contenitore, fai clic su Seleziona.
Continua con la procedura di creazione della VM.
Vai alla pagina Crea un'istanza.
Nella sezione Contenitore, fai clic su Esegui il deployment del contenitore.
Nella pagina Configura contenitore, segui questi passaggi:
- Specifica un nome per l'immagine container.
- Nella sezione Variabili di ambiente, fai clic su Aggiungi variabile.
- Aggiungi o rimuovi le variabili di ambiente in base alle esigenze, una per riga.
- Per confermare i dettagli del contenitore, fai clic su Seleziona.
Continua con la procedura di creazione della VM.
Vai alla pagina Crea un'istanza.
Nella sezione Contenitore, fai clic su Esegui il deployment del contenitore.
Nella pagina Configura contenitore, segui questi passaggi:
- Specifica un nome per l'immagine container.
- Nella sezione Montaggi dei volumi, fai clic su Aggiungi volume.
Nell'elenco Tipo di volume, seleziona Directory e seguenti:
- Nel campo Percorso di montaggio, specifica un percorso di montaggio nella struttura di directory di un contenitore in cui montare una directory host.
- Nel campo Percorso host, specifica un percorso per l'host directory da montare.
- Nell'elenco Modalità, specifica se montare la directory in modalità di lettura/scrittura o di sola lettura.
Per confermare i dettagli del contenitore, fai clic su Seleziona.
Continua con la procedura di creazione della VM.
Vai alla pagina Crea un'istanza.
Nella sezione Contenitore, fai clic su Esegui il deployment del contenitore.
Nella pagina Configura contenitore, segui questi passaggi:
- Specifica un nome per l'immagine container.
- Nella sezione Montaggi volumi, fai clic su Aggiungi volume.
- Dall'elenco Tipo di volume, seleziona TmpFS.
- Nel campo Percorso di montaggio, specifica un percorso di montaggio in un container la struttura di directory in cui vuoi montare un volume TmpFS.
- Nell'elenco Modalità, specifica se montare il volume TmpFS in modalità di lettura/scrittura o di sola lettura.
- Per confermare i dettagli del contenitore, fai clic su Seleziona.
Continua con la procedura di creazione della VM.
- Il disco deve avere un file system
ext4
o non avere alcun file system. Se non è presente un file system iniziale, l'agente di avvio del contenitore formatta il disco inext4
e sono supportati solo il montaggio e il collegamento in lettura/scrittura. - Il disco deve essere collegato alla VM.
Sono supportati sia i dispositivi senza partizioni sia le partizioni. Per i montaggi delle partizioni, il disco non può essere vuoto; deve contenere una tabella di partizione esistente.
Vai alla pagina Crea un'istanza.
Nella sezione Contenitore, fai clic su Esegui il deployment del contenitore.
Nella pagina Configura contenitore, segui questi passaggi:
- Specifica un nome per l'immagine container.
- Nella sezione Montaggi volumi, fai clic su Aggiungi volume.
- Dall'elenco Tipo di volume, seleziona Disco.
- Nel campo Percorso di montaggio, specifica un percorso nella struttura di directory del contenitore in cui vuoi montare il disco persistente.
- Dall'elenco Nome disco, seleziona un disco esistente da .
- Nel campo Partizione, specifica il numero della partizione da montare se il disco ha una tabella delle partizioni. Se il disco non ha partizioni, lascia vuoto questo campo.
- Nell'elenco Modalità, specifica se montare la directory in modalità di lettura/scrittura o di sola lettura.
- Per confermare i dettagli del contenitore, fai clic su Seleziona.
Continua con la procedura di creazione della VM.
Crea un'istanza VM con un contenitore NGINX:
gcloud compute instances create-with-container nginx-vm \ --container-image gcr.io/cloud-marketplace/google/nginx1:1.15 \ --tags http-server
Il container condivide lo stack di rete della VM host e la porta 80 del container viene pubblicata sulla porta 80 della VM host. Il tag
http-server
viene utilizzato come tag target per la regola firewall creata nel passaggio successivo.Crea una regola firewall per abilitare le connessioni alla porta 80 dell'istanza VM. La seguente regola firewall consente le connessioni HTTP alle istanze VM con il tag
http-server
.gcloud compute firewall-rules create allow-http \ --allow tcp:80 --target-tags http-server
Il container inizia automaticamente a ricevere traffico sulla porta 80. Non è necessario eseguire alcuna configurazione aggiuntiva.
Puoi creare regole firewall per combinazioni di protocollo:porta della VM host dove il protocollo è
tcp
oudp
. Queste regole disciplinano in modo efficace l'accesso dall'esterno della VM alle porte del container corrispondenti.- Scopri come eseguire il deployment di container Docker su Compute Engine.
- Scopri di più su Container-Optimized OS.
Quando crei un'istanza o un modello di istanza da utilizzare per il deployment dei container su VM e MIG, specifica la configurazione del container utilizzando la console Google Cloud o Google Cloud CLI.
Le sezioni seguenti descrivono come configurare le opzioni per le istanze VM, ma puoi configurare le seguenti opzioni anche quando crei un modello di istanza. Utilizza la console Google Cloud o Google Cloud CLI per configurare le opzioni per le istanze VM in un modello di istanza.
Console
gcloud
Specifica di un criterio di riavvio
Puoi impostare un criterio di riavvio per specificare se riavviare un container all'uscita. Il criterio predefinito prevede il riavvio sempre. Puoi anche impostare il criterio in modo che il servizio si riavvii in caso di errore o non si riavvii mai.
Console
gcloud
Utilizza il flag
--container-restart-policy
per specificare il criterio di riavvio del contenitore:L'esempio seguente avvia un container con il criterio di riavvio
on-failure
il che significa che il riavvio avviene solo quando il codice di uscita del container diverso da zero:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-restart-policy on-failure
Utilizza il comando
gcloud compute instances update-container
con il--container-restart-policy
flag per il criterio di riavvio su un contenitore in esecuzione su una VM.Eseguire un container in modalità privilegiata
Puoi eseguire un container in modalità con privilegi per consentire l'accesso a tutti i dispositivi sull'host. I container vengono eseguiti come "senza privilegi" per impostazione predefinita e non sono autorizzati ad accedere a qualsiasi dispositivo.
Console
gcloud
Usa il flag
--container-privileged
per eseguire un container con il runtime di accesso. L'esempio seguente avvia un container busybox in modalità con privilegi:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-privileged
Utilizza il comando
gcloud compute instances update-container
con--container-privileged
per aggiornare un container su una VM. Utilizza il flag--no-container-privileged
per disattivare la modalità con privilegi.Allocazione di un buffer per STDIN nel runtime del container
Puoi allocare un buffer per
STDIN
nel runtime del container per mantenere StreamSTDIN
aperto in un container. Se non viene configurato, legge daSTDIN
nel contenitore comportano sempreEOF
.Oltre a allocare uno pseudo-TTY, è necessario mantenere aperto lo stream
STDIN
per stabilire una shell interattiva nel container e per consentire al container di ricevere l'input standard da un pipe.Console
gcloud
Utilizza il flag
--container-stdin
per allocare un buffer perSTDIN
in il runtime del container. L'esempio seguente avvia un container e mantiene aperto il relativoSTDIN
:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-stdin
Utilizza il comando
gcloud compute instances update-container
con--container-stdin
per aggiornare un container su una VM. Utilizza il--no-container-stdin
flag per disattivare l'allocazione di un buffer perSTDIN
.Allocazione di uno pseudo-TTY
L'allocazione di uno pseudo-TTY per un container è necessaria per stabilire uno shell interattiva nel container (insieme allocando un buffer per STDIN).
Console
gcloud
Utilizza il flag
--container-tty
per allocare uno pseudo-TTY. Le seguenti esempio avvia un container e alloca uno pseudo-TTY:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-stdin \ --container-tty
Utilizza il comando
gcloud compute instances update-container
con il--container-tty
flag per aggiornare un contenitore su una VM. Utilizza la--no-container-tty
per non allocare uno pseudo-TTY.Sostituzione del comando predefinito da eseguire all'avvio del container
Il
ENTRYPOINT
di un'immagine container specifica quale eseguibile eseguire all'avvio del container e ti consente di eseguire il container come se fosse il file binario.Puoi eseguire l'override del comando
ENTRYPOINT
dell'immagine container.Console
gcloud
Utilizza il flag
--container-command
per eseguire l'override del container immagineENTRYPOINT
. Nell'esempio seguente viene eseguito il comandouptime
in un contenutore busybox per visualizzare il tempo dall'ultimo avvio:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-command "uptime"
Utilizza il comando
gcloud compute instances update-container
con--container-command
per aggiornare un comando per un container su una VM.Utilizzare il flag
--clear-container-command
con il comandoupdate-container
per cancellare il comando predefinito per il container aggiornato.Passaggio di argomenti al comando ENTRYPOINT del container
Puoi passare (aggiungere) argomenti al comando del contenitore
ENTRYPOINT
o sostituire il comando del contenitore predefinitoCMD
.Console
gcloud
Utilizza il flag
--container-arg
per passare argomenti a un comandoENTRYPOINT
dell'immagine container. Utilizza un flag separato per ogni argomento.Il seguente esempio esegue il comando
/bin/ash
con gli argomenti-c 'ls -l'
in un contenitore configurato per eseguire automaticamente busybox:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-command "/bin/ash" \ --container-arg="-c" \ --container-arg="ls -l"
Utilizza il comando
gcloud compute instances update-container
con i flag--container-arg
per aggiornare gli argomenti del comando per un contenitore in esecuzione su una VM. L'aggiornamento sostituisce l'intero elenco di argomenti con il nuovo elenco.Usa il flag
--clear-container-args
con il comandoupdate-container
per rimuovere tutti gli argomenti dalla dichiarazione del container.Configurazione delle opzioni del driver di log
Se devi configurare le opzioni del driver di log, puoi creare uno script di avvio della VM per aggiornare il file di configurazione di Docker con le opzioni di logging di cui hai bisogno. Queste opzioni si applicano a tutti i container in esecuzione sulla VM e che non specificano opzioni del driver di log.
Ad esempio, il seguente script di avvio imposta diverse opzioni, inclusa un'opzione per limitare le dimensioni dei log del contenitore, quindi riavvia Docker sulla VM:
cat <<EOF > /etc/docker/daemon.json { "live-restore": true, "storage-driver": "overlay2", "log-opts": { "max-size": "10m" } } EOF systemctl restart docker
Imposta le variabili di ambiente
Puoi impostare le variabili di ambiente in un contenitore. Solo l'ultimo valore
KEY
è acquisito quandoKEY
viene ripetuto più di una volta.Console
gcloud
Utilizza il flag
--container-env
per impostare le variabili di ambiente in un container. L'esempio seguente imposta tre variabili di ambiente:HOME
,MODE
eOWNER
:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-env HOME=/home,MODE=test,OWNER=admin
Utilizza il flag
--container-env-file
per impostare le variabili di ambiente da un file locale. L'esempio seguente imposta le due variabili di ambiente dal fileenv.txt
:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-env-file ./env.txt
I contenuti del file
env.txt
sono:# this is a comment HOME=/home MODE=test OWNER=admin
Utilizza il comando
gcloud compute instances update-container
con il flag--container-env
o--container-env-file
per aggiornare le variabili di ambiente per un container su una VM. In questo modo, tutte le variabili presenti in la dichiarazione relativa al container dell'istanza VM. Vengono aggiunte le variabili che non sono nella dichiarazione del contenitore.Utilizza il flag
--remove-container-env
per rimuovere le variabili di ambiente quando di un container su una VM. L'esempio seguente rimuove l'ambiente variabili chiamateMODE
eOWNER
:gcloud compute instances update-container busybox-vm \ --remove-container-env MODE,OWNER
Se una variabile di ambiente specificata non esiste, viene ignorata.
Montaggio di una directory host come volume di dati
Puoi montare una directory da una VM host in un container.
Console
gcloud
Utilizza il flag
--container-mount-host-path
per montare una directory della VM host in un contenitore. Il seguente esempio monta la directory host/tmp
nel contenitore in/logs
in modalità di lettura/scrittura:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-mount-host-path mount-path=/logs,host-path=/tmp,mode=rw
Specifica
mode=ro
per montare una directory host in modalità di sola lettura.Utilizza il comando
gcloud compute instances update-container
con flag--container-mount-host-path
per aggiornare i montaggi della directory host su un containerizzato. Utilizza il flag--remove-container-mounts
per rimuovere i montaggi del volume con i percorsi di montaggio specificati. Nell'esempio riportato di seguito viene rimosso un montaggio del percorso dell'host conmount-path=/logs
:gcloud compute instances update-container busybox-vm \ --remove-container-mounts /logs
Se il percorso di montaggio specificato non esiste, viene ignorato automaticamente.
Montaggio del file system tmpfs come volume di dati
Puoi montare un file system tmpfs vuoto in un contenitore.
Console
gcloud
Usa il flag
--container-mount-tmpfs
per montare un file systemtmpfs
vuoto in un container. Il seguente esempio monta un file systemtmpfs
nel contenuto in/cache
in modalità di lettura/scrittura:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-mount-tmpfs mount-path=/cache
Utilizza il comando
gcloud compute instances update-container
con flag--container-mount-tmpfs
per aggiornaretmpfs
montaggi su un container. Usa il flag--remove-container-mounts
per rimuovere un supportotmpfs
con il percorso di montaggio specificato durante l'aggiornamento. L'esempio seguente rimuove il mounttmpfs
conmount-path=/cache
:gcloud compute instances update-container busybox-vm \ --remove-container-mounts /cache
Se il percorso di montaggio specificato non esiste, viene ignorato in silenzio.
Montaggio di un disco permanente come volume di dati
Con Container-Optimized OS 69 oppure in seguito, potrai montare dischi permanenti da una VM host in un container.
Prerequisiti
Console
gcloud
Utilizza la
gcloud compute instances create-with-container
o il comandogcloud compute instances update-container
con il flag--container-mount-disk
per montare un disco permanente in un container.L'esempio seguente monta due dischi,
my-data-disk
emy-scratch-disk
, nel container in/disks/data-disk
e/disks/scratch-disk
percorsi di montaggio.gcloud compute instances create-with-container busybox-vm \ --disk name=my-data-disk \ --create-disk name=my-scratch-disk,auto-delete=yes,image=ubuntu-1710-artful-v20180315,image-project=ubuntu-os-cloud \ --container-image docker.io/busybox:1.27 \ --container-mount-disk mount-path="/disks/data-disk",name=my-data-disk,mode=ro \ --container-mount-disk mount-path="/disks/scratch-disk",name=my-scratch-disk
Tieni presente che il flag
--disk
allegamy-data-disk
,--create-disk
il flag crea e allegamy-scatch-disk
e--container-mount-disk
monta i dischi collegati al container. Poiché non è specificato unmode
permy-scratch-disk
, il disco viene montato sul contenitore in modalità di lettura/scrittura per impostazione predefinita.Utilizza il comando
gcloud compute instances update-container
con il--container-mount-disk
flag per montare altri dischi collegati o per modificare i mount dei dischi esistenti.Usa il flag
--remove-container-mounts
per rimuovere un montaggio del volume del disco con il percorso di montaggio specificato. L'esempio seguente cambia la modalità di montaggio dimy-data-disk
per leggere/scrivere e rimuove il montaggio del disco conmount-path="/disks/scratch-disk"
.gcloud compute instances update-container busybox-vm \ --container-mount-disk mount-path="/disks/data-disk",name=my-data-disk,mode=rw \ --remove-container-mounts "/disks/scratch-disk"
Se il percorso di montaggio che passi al flag
--remove-container-mounts
inesistente, viene ignorato automaticamente.Pubblicazione delle porte del contenitore
Le VM con container utilizzano la modalità di rete dell'host, dove un container condivide lo stack di rete dell'host e tutte le interfacce dell' host sono disponibili per il container.
Le porte dei container hanno una mappatura uno a uno alle porte della VM host. Ad esempio, un la porta 80 del container è mappata alla porta 80 della VM host. Compute Engine non supporta il flag di pubblicazione della porta (
-p
) e non è necessario specificarlo per il funzionamento della mappatura.Per pubblicare le porte di un contenitore, configura le regole di firewall per consentire l'accesso alle porte dell'istanza VM host. Le porte corrispondenti del contenutore sono accessibili automaticamente, in base alle regole del firewall.
Esempio: pubblicazione della porta 80 per un container NGINX
L'esempio seguente mostra come creare un'istanza VM con un NGINX e consentire il traffico alla porta 80 del container.
Passaggi successivi
Salvo quando diversamente specificato, i contenuti di questa pagina sono concessi in base alla licenza Creative Commons Attribution 4.0, mentre gli esempi di codice sono concessi in base alla licenza Apache 2.0. Per ulteriori dettagli, consulta le norme del sito di Google Developers. Java è un marchio registrato di Oracle e/o delle sue consociate.
Ultimo aggiornamento 2024-10-14 UTC.
-