Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
La piattaforma contenitore Di Windows è in espansione. Docker è stato il primo passaggio del contenitore, ora stiamo creando altri strumenti della piattaforma contenitore.
- containerd/cri - novità di Windows Server 2019/Windows 10 1809.
- runhcs: una controparte dell'host dei contenitori di Windows per runc.
- hcs: il Servizio Host Compute e gli shim utili per semplificare l'uso.
Questo articolo illustra la piattaforma contenitore Windows e Linux, nonché ogni strumento della piattaforma contenitore.
Piattaforma contenitore Windows e Linux
Negli ambienti Linux, gli strumenti di gestione dei contenitori come Docker sono basati su un set più dettagliato di strumenti per contenitori: runc e containerd.
runc
è uno strumento da riga di comando Linux per la creazione e l'esecuzione di contenitori in base alla specifica del runtime del contenitore OCI .
containerd
è un daemon che gestisce il ciclo di vita del contenitore dal download e dalla decompressione dell'immagine del contenitore all'esecuzione e alla supervisione del contenitore.
In Windows abbiamo adottato un approccio diverso. Quando abbiamo iniziato a lavorare con Docker per supportare i contenitori Windows, abbiamo costruito direttamente sul servizio Host Compute Service (HCS). Questo post di blog è pieno di informazioni sul motivo per cui è stato creato HCS e perché è stato adottato questo approccio ai contenitori inizialmente.
A questo punto, Docker chiama ancora direttamente nel servizio HCS. In futuro, tuttavia, gli strumenti di gestione dei container che si espandono per includere container Windows e l'host container di Windows potrebbero fare riferimento a containerd e runhcs nel modo in cui fanno riferimento a containerd e runc su Linux.
runhcs
runhcs
è un fork di runc
. Come runc
, runhcs
è un client della riga di comando per l'esecuzione di applicazioni in pacchetto in base al formato OCI (Open Container Initiative) ed è un'implementazione conforme della specifica Open Container Initiative.
Le differenze funzionali tra runc e runhcs includono:
runhcs
funziona su Windows. Comunica con il HCS per creare e gestire contenitori.runhcs
può eseguire una varietà di diverse tipologie di contenitori.- Windows e Linux Hyper-V isolati
- Contenitori di processi windows (l'immagine del contenitore deve corrispondere all'host del contenitore)
Utilizzo :
runhcs run [ -b bundle ] <container-id>
<container-id>
è il nome dell'istanza del contenitore che si sta avviando. Il nome deve essere univoco nell'host del contenitore.
La directory bundle (usando -b bundle
) è facoltativa.
Come per runc, i contenitori vengono configurati usando bundle. Il bundle di un contenitore è la directory che contiene il file della specifica OCI del contenitore, "config.json". Il valore predefinito per "bundle" è la directory corrente.
Il file di specifiche OCI, "config.json", deve avere due campi da eseguire correttamente:
- Un percorso verso lo spazio scratch del contenitore
- Percorso della directory del livello del contenitore
I comandi del contenitore disponibili in runhcs includono:
Strumenti per creare ed eseguire un contenitore
- eseguire crea ed esegue un contenitore
- creare creare un contenitore
Strumenti per gestire i processi in esecuzione in un contenitore:
- avviare esegue il processo definito dall'utente in un contenitore creato
- exec esegue un nuovo processo all'interno del contenitore
- pause pause sospende tutti i processi all'interno del contenitore
- riprendere riprende tutti i processi sospesi in precedenza
- ps ps visualizza i processi in esecuzione all'interno di un contenitore
Strumenti per gestire lo stato di un contenitore
- stato restituisce lo stato di un contenitore
- termina invia il segnale specificato (impostazione predefinita: SIGTERM) al processo init del contenitore
- eliminare elimina tutte le risorse contenute nel contenitore spesso usato con il contenitore scollegato
L'unico comando che può essere considerato multicontenitore è lista. Elenca i contenitori in esecuzione o sospesi avviati da runhcs con la radice specificata.
HCS
Sono disponibili due wrapper in GitHub per l'interfaccia con HCS. Poiché HCS è un'API C, i wrapper semplificano la chiamata di HCS da linguaggi di livello superiore.
- hcsshim - HCSShim è scritto in Go ed è la base per runhcs. Acquisire la versione più recente da AppVeyor o crearla manualmente.
- dotnet-computevirtualization - dotnet-computevirtualization è un wrapper C# per HCS.
Se si vuole usare l'HCS (direttamente o tramite un wrapper), oppure si vuole creare un wrapper Rust/Haskell/LinguaDiTuaScelta intorno all'HCS, lasciare un commento.
Per un'analisi più approfondita di HCS, guardare presentazione DockerCon di John Stark.
containerd/cri
Importante
Il supporto CRI è disponibile solo in Windows Server 2019/Windows 10 1809 e versioni successive.
Mentre le specifiche OCI definiscono un singolo contenitore, CRI (interfaccia di runtime del contenitore) descrive i contenitori come carichi di lavoro in un ambiente sandbox condiviso denominato pod. I pod possono contenere uno o più carichi di lavoro in container. I pod consentono agli agenti di orchestrazione dei contenitori come Kubernetes e Service Fabric Mesh di gestire carichi di lavoro raggruppati che devono trovarsi nello stesso host con alcune risorse condivise, ad esempio memoria e vNET.
Anche se runHCS e containerd possono entrambi essere gestiti su qualsiasi sistema Windows Server 2016 o versione successiva, il supporto dei pod (gruppi di contenitori) ha richiesto modifiche di rilievo agli strumenti dei contenitori in Windows. Il supporto CRI è disponibile in Windows Server 2019/Windows 10 1809 e versioni successive.