I container software sono un modo conveniente per eseguire le app in di spazio utente isolate. Puoi eseguire container su Linux o Windows Server immagini VM pubbliche o su una Immagine Container-Optimized OS. I container permettono le tue app vengono eseguite con meno dipendenze sulla macchina virtuale (VM) host vengono eseguite in modo indipendente rispetto ad altre app containerizzate di cui esegui il deployment la stessa istanza VM. Queste caratteristiche rendono portabilità delle app più facili da distribuire e gestire su larga scala.
Questo documento descrive alcune delle tecnologie di container più comuni che che puoi utilizzare per eseguire container su istanze di Compute Engine. Puoi usano queste tecnologie sulla maggior parte immagini VM pubbliche che offre Compute Engine.
Esegui i container su Compute Engine quando hai bisogno del controllo completo dell'ambiente dei container e degli strumenti di orchestrazione dei container.
In alternativa, puoi utilizzare Google Kubernetes Engine (GKE) per semplificare la gestione dei cluster e le attività di orchestrazione dei container senza dover gestire le istanze VM sottostanti. GKE offre un ambiente gestito per il deployment, la gestione containerizzate usando l'infrastruttura Google.
L'ambiente di GKE è composto da più macchine (nello specifico, Compute Engine) raggruppate a formare un'istanza . Quando esegui un cluster GKE, ottieni il vantaggio funzionalità avanzate di gestione dei cluster come bilanciamento del carico, pool di nodi, riparazione automatica dei nodi scalabilità e upgrade automatici, nonché logging e monitoraggio fornite da Google Cloud.
Scopri come creare un cluster GKE con pool di nodi con Microsoft Windows Server.
Provalo
Se non hai mai utilizzato Google Cloud, crea un account per valutare in che modo Compute Engine offre prestazioni reali diversi scenari. I nuovi clienti ricevono anche 300 $ di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
Prova Compute Engine gratuitamenteTecnologie per container in esecuzione su Compute Engine
In generale, le istanze di Compute Engine possono eseguire quasi tutti tecnologia o strumento. Puoi eseguire diversi tipi di container su Sistemi operativi Linux. Puoi anche eseguire Docker su Windows Server 2016 o versioni successive. Le seguenti include diversi strumenti comuni che puoi usare per eseguire e gestire per le app containerizzate:
- Docker e I Podman sono due tipi di container che ti consentono di eseguire app containerizzate.
- Kubernetes è un container di orchestrazione dei container che puoi usare per gestire e scalare di container in più istanze o in un ambiente cloud ibrido.
- Container su Compute Engine offrono un modo semplice per eseguire il deployment dei container nelle istanze VM di Compute Engine o gruppi di istanze gestite,
- Puoi convertire i tuoi sistemi esistenti in immagini LXD ed esegui all'interno delle istanze VM di Compute Engine, di migrazione. LXD viene eseguito sulle immagini Ubuntu.
Inoltre, puoi utilizzare Artifact Registry per gestire le versioni delle immagini container. Artifact Registry funge da piattaforma posizione in cui archiviare e gestire le immagini container prima di eseguirne il deployment di immagini in Kubernetes su Compute Engine di cluster Google Kubernetes Engine.
Immagini VM ottimizzate per i container
Compute Engine offre immagini VM pubbliche che puoi utilizzare per creare istanze ed eseguire carichi di lavoro con container. Alcune di queste VM pubbliche le immagini hanno un sistema operativo minimalista ottimizzato per i container che include preinstallate versioni più recenti di Docker, Podman o Kubernetes. I seguenti elementi pubblici Le famiglie di immagini sono progettate specificamente per eseguire container:
- Container-Optimized OS di Google
- .
- Include: Docker, Kubernetes
- Progetto immagine:
cos-cloud
- Famiglia di immagini:
cos-stable
- Fedora CoreOS
- .
- Include: Podman, Docker
- Progetto immagine:
fedora-coreos-cloud
- Famiglia di immagini:
fedora-coreos-stable
- Ubuntu
- .
- Include: LXD
- Progetto immagine:
ubuntu-os-cloud
- Famiglia di immagini:
ubuntu-2004-lts
Se hai bisogno di eseguire tecnologie e strumenti specifici per i container su immagini che non includerle per impostazione predefinita, installale manualmente.
Installazione di tecnologie di container sulle istanze
Per avviare un singolo container su un'istanza, puoi specificare un'immagine container quando crei un'istanza. Compute Engine fornisce automaticamente i dati Container-Optimized OS con Docker installato e avvia il tuo del container all'avvio della VM. Per ulteriori informazioni, vedi Deployment di container sulle VM .
In alternativa, puoi eseguire i carichi di lavoro dei container su Compute Engine utilizzando le tecnologie dei container e gli strumenti di orchestrazione di cui hai bisogno. Tu puoi creare un'istanza da una public VM e installare le tecnologie di container desiderate. Ad esempio:
- Installa Docker sulle istanze di Compute Engine in modo da poter eseguire Docker su queste istanze.
- Installa Podman sulle istanze Compute Engine come alternativa dal runtime del container.
- Installa Kubernetes sulle tue istanze per fornire l'orchestrazione dei container sia per Docker che per Open Container Initiative (OCI).
In alcune situazioni, potresti aver bisogno di versioni specifiche di queste tecnologie per garantirne il corretto funzionamento. Ad esempio, Kubernetes di solito funziona al meglio con versioni specifiche di Docker. In genere, è possibile installare le ultime versioni di queste tecnologie per ottenere risultati ottimali.
Installazione di Docker su immagini Windows Server
Windows Server 2016 e versioni successive includono il supporto dei container. Se hai intenzione di per eseguire container Docker su un'istanza Windows Server, puoi installare Docker su un'immagine di base di Windows Server o utilizza immagini del marketplace di Mirantis.
Se vuoi installare Docker CE sull'immagine di base di Windows Server, segui i passaggi descritti di seguito.
Per iniziare, crea un'istanza Windows Server utilizzando un'immagine pubblica di Windows Server 2019 o versioni successive. Per un supporto ottimale dei container, ti consigliamo di utilizzare il modello Versione LTSC di Windows Server. Per ulteriori informazioni su LTSC, consulta la sezione Servizi di Windows Server canali di YouTube.
Installa Docker
Installa Docker su Windows. Per maggiori informazioni, vedi Preparare le finestre per i container. Riavvia l'istanza al termine dell'installazione.
Ulteriori passaggi di configurazione
A questo punto puoi utilizzare Docker per eseguire i container nell'istanza. Ad esempio:
il comando seguente scarica l'immagine del container nanoserver
di Windows e
esegue un prompt dei comandi all'interno di un container nanoserver
:
PS C:\> docker run -it mcr.microsoft.com/windows/nanoserver:1809 cmd.exe
La MTU di rete predefinita di Docker è di 1500 byte. Se hai configurato a 1500 byte, ignorando il resto di questa sezione. Tuttavia, se utilizzi l'impostazione predefinita la MTU VPC di 1460 byte nella tua rete, configurazione aggiuntiva su ogni istanza.
Imposta la MTU per tutte le interfacce di rete (entrambe
Ethernet e vEthernet) a 1460
eseguendo i comandi seguenti in una
Terminale PowerShell su ogni istanza:
PS C:\> Get-NetAdapter | Where-Object Name -like "*Ethernet*" | ForEach-Object {
& netsh interface ipv4 set subinterface $_.InterfaceIndex mtu=1460 store=persistent
}
PS C:\> netsh interface ipv4 show subinterfaces MTU MediaSenseState Bytes In Bytes Out Interface ------ --------------- --------- --------- ------------- 4294967295 1 0 0 Loopback Pseudo-Interface 1 1460 1 306804 668688 Ethernet 1460 1 0 1282 vEthernet (nat)
Anche dopo aver modificato la MTU dell'istanza, la connettività dai container
internet potrebbe essere instabile perché, per impostazione predefinita, la rete del container
a sua volta utilizza una MTU di 1500
. Per consentire ai comandi di impostare correttamente la MTU
per ogni container, consulta la sezione MTU container.
Potresti dover rieseguire periodicamente questi comandi MTU durante la configurazione il networking Docker. Per informazioni dettagliate, consulta i problemi noti .
Esecuzione dei container Windows
Sono disponibili molte risorse per iniziare a utilizzare i container Windows:
- Microsoft offre un'ampia gamma documentazione sui container Windows.
Docker Hub può essere utilizzato come per l'archiviazione e il pull dei container Windows.
Problemi noti relativi ai container Windows
Ritiro delle immagini di Windows Server 2019 per i container
Google ha offerto una famiglia di immagini Windows Server con Mirantis Container Runtime (in precedenza Docker EE) preinstallato:
- Windows
- .
- Include: Docker
- Progetto immagine:
windows-cloud
- Famiglia di immagini:
windows-2019-core-for-containers
All'inizio del 2023, Microsoft ha smesso di distribuire e supportare il container Runtime di Mirantis per Windows Server. Sebbene Google sia riuscita a continuerà a pubblicare questa famiglia di immagini fino al 30 ottobre 2023. è stata ritirata e tutte le immagini in questa famiglia sono state contrassegnate come obsolete.
Le macchine virtuali basate su queste immagini create prima del 30 ottobre 2023 continuano a essere eseguite senza interruzioni. Tuttavia, la creazione di istanze di istanze basate su queste immagini avranno esito negativo dopo questa data.
Le immagini personalizzate derivate da queste immagini prima del 30 ottobre 2023 continueranno per funzionare. Tuttavia, le immagini personalizzate non riceveranno automaticamente alcuna patch Aggiornati il martedì di Windows, né riceveranno le versioni aggiornate di Mirantis il runtime del container.
Se vuoi continuare a utilizzare immagini con il runtime container Mirantis Mirantis Inc offre immagini su Google Cloud Marketplace. Il costo di queste immagini VM include l'assistenza e licenze per Mirantis Container Runtime direttamente da Mirantis. Clienti all'uso di Mirantis Container Runtime autonomo può anche scaricare direttamente dal sito web di Mirantis.
Se vuoi eseguire la migrazione a un runtime dei container alternativo come Docker CE, segui le istruzioni riportate sopra.
I container non sono compatibili con le versioni di Windows
I container basati su versioni precedenti di Windows non funzionano Istanze di Compute Engine che eseguono versioni più recenti di Windows. Docker esegue il pull della versione Windows Server 2019 di un container per impostazione predefinita. Questo il comando seguente in un'istanza che esegue Windows Server La versione 1709 o successive genera un errore:
PS C:\> docker run -it mcr.microsoft.com/windows/nanoserver cmd.exe docker: Error response from daemon: container 9a1eb8bbcba4e91792be65f3c40b5a1aee062f02fbc60a78444b47d043438069 encountered an error during CreateContainer: failure in a Windows system call: The operating system of the container does not match the operating system of the host. (0xc0370101)
Versione del contenitore Windows di Microsoft
compatibilità
contiene ulteriori informazioni. Come aggirare la versione del contenitore Windows
incompatibilità, specifica il tag corrispondente ai tuoi
quando esegui il pull e l'esecuzione dei container. Ad esempio, in Windows Server,
versione 20H2, utilizza il comando seguente per eseguire un prompt dei comandi nel
versione 20H2 nanoserver
del container invece del container LTSC (1809) predefinito del 2019:
PS C:\> docker run -it mcr.microsoft.com/windows/nanoserver:1809 cmd.exe
Le incompatibilità delle MTU influiscono sulla connettività di istanze e container
Quando crei una rete di container su un'istanza Windows utilizzando i comandi docker
network create
o New-VMSwitch
, la MTU della rete dell'istanza
a riga di comando è in genere forzato a
1500
La
l'interfaccia di rete predefinita all'interno di un nuovo container Docker,
utilizza una MTU di 1500
.
Se la tua rete VPC ha una MTU di 1460
, potresti
riscontra i seguenti problemi:
La sessione RDP può interrompersi e potresti non riuscire a riconnetterti. Questo è noto quando si crea un contenitore trasparente Google Cloud.
La risoluzione DNS all'interno del container potrebbe non riuscire.
La risoluzione DNS ha esito positivo, ma è stata stabilita una connessione HTTP dal del container a internet potrebbe non riuscire.
La soluzione alternativa consigliata per queste limitazioni richiede due passaggi:
l'impostazione della MTU per le interfacce di rete dell'istanza su 1460
e impostando la MTU per le interfacce di rete dei container
a 1460
. In alternativa, puoi
imposta la MTU per il VPC su 1500
, ma questo
richiede l'arresto o la migrazione di tutte le VM.
1. Impostazione della MTU per le interfacce di rete dell'istanza Windows
Esegui il comando seguente in un terminale PowerShell sull'istanza di Windows per imposta la MTU per tutte le interfacce di rete (sia Ethernet che vEthernet):
PS C:\> Get-NetAdapter | Where-Object Name -like "*Ethernet*" | ForEach-Object {
& netsh interface ipv4 set subinterface $_.InterfaceIndex mtu=1460 store=persistent
}
Verifica che le MTU dell'interfaccia Ethernet e vEthernet dell'istanza siano impostate su
1460
utilizzando questo comando:
PS C:\> netsh interface ipv4 show subinterfaces MTU MediaSenseState Bytes In Bytes Out Interface ------ --------------- --------- --------- ------------- 4294967295 1 0 0 Loopback Pseudo-Interface 1 1460 1 628295912 2613170 Ethernet 1460 1 37793 223909 vEthernet (nat)
Se non riesci a eseguire questi comandi perché non riesci più a connetterti a
per un'istanza mediante RDP, potrai connetterti all'istanza attraverso
console Cloud, avvia cmd
ed eseguire i comandi netsh
per riparare la MTU. Per evitare di dover
esegui questa operazione, ti consigliamo di eseguire qualsiasi docker network ...
o New-VMSwitch
come parte di uno script che esegue anche il comando MTU da riparare.
2. Impostazione della MTU per le interfacce di rete dei container Windows
La MTU di un container Windows deve essere impostata mentre il container è in esecuzione, dall'interno del container o dall'istanza che ospita il container. Se PowerShell è disponibile nel tuo container. Puoi eseguire questo comando in modo interattivo o da uno script nel container per impostare correttamente la MTU:
PS C:\> Get-NetAdapter | Where-Object Name -like "vEthernet*" | ForEach-Object {
& netsh interface ipv4 set subinterface $_.InterfaceIndex mtu=1460 store=persistent
}
In alternativa, puoi eseguire questo comando sull'istanza Windows per impostare la MTU per tutte container in esecuzione:
PS C:\> Get-NetIPInterface -IncludeAllCompartments |
Where-Object InterfaceAlias -like "vEthernet*" |
Set-NetIPInterface -IncludeAllCompartments -NlMtuBytes 1460
I container Hyper-V non si avviano
Container Hyper-V al momento non sono supportati su Compute Engine.
Passaggi successivi
- Crea e avvia un'istanza che puoi utilizzare per eseguire applicazioni container.
- Scopri di più sulle istanze di Compute Engine.
- Scopri di più su Google Kubernetes Engine, che per eseguire container su Google Cloud senza e gestire personalmente le istanze di Compute Engine.
- Scopri di più su Kubernetes.
- Scopri come utilizzare Artifact Registry per l'archiviazione le immagini container privatamente all'interno di Google Cloud.