Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Windows containerplattform expanderar! Docker var den första delen av containerresan, nu skapar vi andra verktyg för containerplattform.
- containerd/cri – ny i Windows Server 2019/Windows 10 1809.
- runhcs – en motsvarighet för Windows-container-värdar till runc.
- hcs – den Host Compute Service + praktiska shims för att göra det enklare att använda.
Den här artikeln handlar om Windows- och Linux-containerplattformen samt varje verktyg för containerplattform.
Windows- och Linux-containerplattform
I Linux-miljöer bygger containerhanteringsverktyg som Docker på en mer detaljerad uppsättning containerverktyg: runc och containerbaserade.
runc är ett Linux-kommandoradsverktyg för att skapa och köra containrar enligt OCI-containerkörningsspecifikationen.
containerd är en daemon som hanterar containerns livscykel från att ladda ned och packa upp containeravbildningen till containerkörning och övervakning.
I Windows använde vi en annan metod. När vi började arbeta med Docker för att stödja Windows-containrar byggde vi direkt på HCS (Host Compute Service). Det här blogginlägget är fullt av information om varför vi byggde HCS och varför vi tog den här metoden till containrar från början.
Nu anropar Docker fortfarande direkt till HCS. Framöver kan dock containerhanteringsverktyg som utökas till att omfatta Windows-containrar och Windows-containervärden anropa containerd och runhcs på samma sätt som de anropar containerd och runc i Linux.
runhcs
runhcs är en förgrening av runc. Precis som runcär runhcs en kommandoradsklient för att köra program som paketeras enligt OCI-formatet (Open Container Initiative) och är en kompatibel implementering av Open Container Initiative-specifikationen.
Funktionella skillnader mellan runc och runhcs är:
runhcskörs i Windows. Den kommunicerar med HCS- för att skapa och hantera containrar.runhcskan köra en mängd olika containertyper.- Windows- och Linux-Hyper-V isolering
- Windows-processcontainrar (containeravbildningen måste matcha containervärden)
Användning:
runhcs run [ -b bundle ] <container-id>
<container-id> är namnet på containerinstansen som du startar. Namnet måste vara unikt på värddatorn för containrar.
Paketkatalogen (med -b bundle) är valfri.
Precis som med runc konfigureras containrar med hjälp av paket. En containersamling är katalogen med containerns OCI-specifikationsfil, "config.json". Standardvärdet för "bundle" är den aktuella katalogen.
OCI-specifikationsfilenconfig.jsonmåste ha två fält som ska köras korrekt:
- En sökväg till containerns reputrymme
- En sökväg till containerns lagerkatalog
Containerkommandon som är tillgängliga i runhcs är:
Verktyg för att skapa och köra en container
- kör skapar och kör en container
- skapa skapa en container
Verktyg för att hantera processer som körs i en container:
- starta kör den användardefinierade processen i en skapad container
- exec kör en ny process i containern
- pausar pausar alla processer i containern
- återupptar återupptar alla processer som tidigare har pausats
- ps ps visar de processer som körs i en container
Verktyg för att hantera en containers tillstånd
- status visar statusen för en container
- kill skickar den angivna signalen (standard: SIGTERM) till containerns initprocess
- ta bort tar bort alla resurser som innehas av containern som ofta används med fristående container
Det enda kommando som kan betraktas som flera containrar är lista. Den listar containrar som körs eller pausas och som startats av runhcs med den angivna roten.
HCS
Vi har två inpaketningar tillgängliga på GitHub för att interagera med HCS. Eftersom HCS är ett C-API gör omslutningar det enkelt att anropa HCS från språk på högre nivå.
- hcsshim - HCSShim är skriven i Go och det är grunden för runhcs. Hämta det senaste från AppVeyor eller skapa det själv.
- dotnet-computevirtualization – dotnet-computevirtualization är en C#-omslutning för HCS.
Om du vill använda HCS (antingen direkt eller via en omslutning) eller om du vill göra en Rust/Haskell/InsertYourLanguage-omslutning runt HCS lämnar du en kommentar.
För en djupare titt på HCS, titta på John Starks DockerCon-presentation.
containerd/cri
Viktig
CRI-stöd är endast tillgängligt i Windows Server 2019/Windows 10 1809 och senare.
OCI-specifikationer definierar en enda container, men CRI- (containerkörningsgränssnitt) beskriver containrar som arbetsbelastningar i en delad sandbox-miljö som kallas för en podd. Poddar kan innehålla en eller flera containerbelastningar. Poddar låter containerorkestrerare som Kubernetes och Service Fabric Mesh hantera grupperade arbetsbelastningar som ska finnas på samma värd med vissa delade resurser, till exempel minne och virtuella nätverk.
Även om runHCS och containerd båda kan användas på alla Windows-system Server 2016 eller senare, krävdes brytande förändringar av containerverktyg i Windows för att stödja poddar (grupper av containrar). CRI-stöd är tillgängligt på Windows Server 2019/Windows 10 1809 och senare.