Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Platforma kontenera systemu Windows rozszerza się! Platforma Docker była pierwszym elementem podróży kontenera, a teraz tworzymy inne narzędzia platformy kontenerów.
- kontenerd/cri — nowość w systemie Windows Server 2019/Windows 10 1809.
- runhcs — odpowiednik hosta kontenera systemu Windows dla runc.
- hcs — usługa obliczeniowa hosta i poręczne podkładki, które ułatwiają korzystanie.
W tym artykule omówiono platformę kontenerów dla systemów Windows i Linux, a także każde narzędzie platformy kontenerów.
Platforma kontenerów systemu Windows i Linux
W środowiskach Linux narzędzia do zarządzania kontenerami, takie jak Docker, są oparte na bardziej szczegółowy zestawie narzędzi kontenerowych: runc i containerd.
architektura platformy Docker
runc
jest narzędziem wiersza polecenia systemu Linux do tworzenia i uruchamiania kontenerów zgodnie ze specyfikacją środowiska uruchomieniowego kontenera OCI.
containerd
to demon, który zarządza cyklem życia kontenera — od pobierania i rozpakowywania obrazu kontenera po wykonywanie kontenera i nadzór nad nim.
W systemie Windows przyjęliśmy inne podejście. Po rozpoczęciu pracy z platformą Docker w celu obsługi kontenerów systemu Windows utworzyliśmy bezpośrednio usługę HCS (Host Compute Service). Ten wpis w blogu jest pełen informacji o tym, dlaczego utworzyliśmy rozwiązanie HCS i dlaczego początkowo podjęliśmy to podejście do kontenerów.
W tym momencie platforma Docker nadal wywołuje połączenie bezpośrednio z usługą HCS. Jednak w przyszłości narzędzia do zarządzania kontenerami, które się rozszerzają, aby włączyć kontenery Windows oraz hosta kontenerów Windows, mogą wywoływać containerd i runhcs tak jak w przypadku containerd i runc w systemie Linux.
runhcs
runhcs
to rozwidlenie runc
. Podobnie jak runc
, runhcs
jest klientem wiersza polecenia do uruchamiania aplikacji spakowanych zgodnie z formatem Open Container Initiative (OCI) i jest zgodną implementacją specyfikacji Open Container Initiative.
Różnice funkcjonalne między runc a runhcs obejmują:
runhcs
działa w systemie Windows. Komunikuje się z HCS, aby tworzyć i zarządzać kontenerami.runhcs
może uruchamiać różne typy kontenerów.- System Windows i Linux Hyper-V izolacja
- Kontenery procesów systemu Windows (obraz kontenera musi być zgodny z hostem kontenera)
Użycie :
runhcs run [ -b bundle ] <container-id>
<container-id>
to nazwa wystąpienia kontenera, które uruchamiasz. Nazwa musi być unikatowa na hoście kontenera.
Katalog pakietu (przy użyciu -b bundle
) jest opcjonalny.
Podobnie jak w przypadku runc, kontenery są konfigurowane przy użyciu pakietów. Pakiet kontenera to katalog z plikiem specyfikacji OCI kontenera "config.json". Wartość domyślna "bundle" to bieżący katalog.
Plik specyfikacji OCI "config.json", musi mieć dwa pola do poprawnego uruchomienia:
- Ścieżka do przestrzeni tymczasowej kontenera
- Ścieżka do katalogu warstwy kontenera
Polecenia kontenera dostępne w elementach runhcs obejmują:
Narzędzia do tworzenia i uruchamiania kontenera
- uruchom tworzy i uruchamia kontener
- twórz twórz kontener
Narzędzia do zarządzania procesami uruchomionymi w kontenerze:
- uruchamia proces zdefiniowany przez użytkownika w utworzonym kontenerze
- exec uruchamia nowy proces wewnątrz kontenera
- pauza pauza wstrzymuje wszystkie procesy wewnątrz kontenera
- wznawia wznawia wszystkie procesy, które zostały wcześniej wstrzymane
- ps ps wyświetla procesy uruchomione wewnątrz kontenera
Narzędzia do zarządzania stanem kontenera
- stan wyprowadza stan kontenera
- kill wysyła określony sygnał (ustawienie domyślne: SIGTERM) do procesu inicjowania kontenera
- usunąć usuwa wszystkie zasoby przechowywane przez kontener, co jest często stosowane w przypadku odłączonego kontenera.
Jedynym poleceniem, które można uznać za wielokontenerowe, jest list. Wyświetla listę uruchomionych lub wstrzymanych kontenerów uruchomionych przez runhcs z podanym katalogiem głównym.
HCS
Mamy dwa wrapery dostępne na GitHub, aby połączyć się z HCS. Ponieważ HCS to C API, otoki (wrappers) ułatwiają wywoływanie HCS z języków wyższego poziomu.
- hcsshim - HCSShim jest napisany w Języku Go i jest podstawą runhcs. Pobierz najnowszą wersję z aplikacji AppVeyor lub skompiluj ją samodzielnie.
- dotnet-computevirtualization — dotnet-computevirtualization to opakowanie języka C# dla HCS.
Jeśli chcesz użyć rozwiązania HCS (bezpośrednio lub za pośrednictwem opakowania), lub chcesz utworzyć opakowanie dla języka Rust/Haskell/InsertYourLanguage wokół HCS, proszę pozostaw komentarz.
Aby uzyskać bardziej szczegółowe informacje na temat rozwiązania HCS, obejrzyj prezentację prezentacji DockerCon Johna Starka.
containerd/cri
Ważny
Obsługa cri jest dostępna tylko w systemie Windows Server 2019/Windows 10 1809 lub nowszym.
Chociaż specyfikacje OCI definiują pojedynczy kontener, CRI (interfejs środowiska uruchomieniowego kontenera) opisuje kontenery jako obciążenia w udostępnionym środowisku piaskownicy, zwanym pod. Zasobniki mogą zawierać co najmniej jedno obciążenie kontenera. Pody pozwalają orkiestratorom kontenerów, takim jak Kubernetes i Service Fabric Mesh, obsługiwać pogrupowane obciążenia, które powinny działać na tym samym hoście, z współdzielonymi zasobami, takimi jak pamięć i sieci wirtualne.
Podczas gdy aplikacje runHCS i containerd mogą zarządzać systemami Windows Server 2016 lub nowszymi, obsługa podów (grup kontenerów) wymagała wprowadzenia zmian powodujących niezgodność w narzędziach kontenerowych w systemie Windows. Obsługa CRI jest dostępna w systemie Windows Server 2019/Windows 10 1809 i późniejszych.