Wprowadzenie do kontenerów i platformy Docker

Porada

Ta zawartość jest fragmentem książki eBook, architektury mikrousług platformy .NET dla konteneryzowanych aplikacji platformy .NET, dostępnej na platformie .NET Docs lub jako bezpłatnego pliku PDF z możliwością pobrania, który można odczytać w trybie offline.

.NET Microservices Architecture for Containerized .NET Applications eBook cover thumbnail.

Konteneryzacja to podejście do tworzenia oprogramowania, w którym aplikacja lub usługa, jej zależności, a jej konfiguracja (abstrakcja jako pliki manifestu wdrożenia) jest spakowana razem jako obraz kontenera. Konteneryzowana aplikacja może być testowana jako jednostka i wdrażana jako wystąpienie obrazu kontenera w systemie operacyjnym hosta.

Podobnie jak kontenery wysyłkowe pozwalają na transport towarów przez statek, pociąg lub ciężarówkę niezależnie od ładunku wewnątrz, kontenery oprogramowania działają jako standardowa jednostka wdrażania oprogramowania, która może zawierać inny kod i zależności. Konteneryzowanie oprogramowania w ten sposób umożliwia deweloperom i specjalistom IT wdrażanie ich w środowiskach bez żadnych modyfikacji.

Kontenery izolować również aplikacje od siebie w udostępnionym systemie operacyjnym. Konteneryzowane aplikacje działają na hoście kontenera, który z kolei działa w systemie operacyjnym (Linux lub Windows). W związku z tym kontenery mają znacznie mniejszy ślad niż obrazy maszyn wirtualnych.

Każdy kontener może uruchamiać całą aplikację internetową lub usługę, jak pokazano na rysunku 2–1. W tym przykładzie host platformy Docker jest hostem kontenera, a aplikacja App1, App2, Svc 1 i Svc 2 są konteneryzowanymi aplikacjami lub usługami.

Diagram showing four containers running in a VM or a server.

Rysunek 2–1. Wiele kontenerów uruchomionych na hoście kontenera

Kolejną zaletą konteneryzacji jest skalowalność. Możesz szybko skalować w poziomie, tworząc nowe kontenery na potrzeby zadań krótkoterminowych. Z punktu widzenia aplikacji tworzenie wystąpienia obrazu (tworzenie kontenera) jest podobne do tworzenia wystąpienia procesu, takiego jak usługa lub aplikacja internetowa. W przypadku niezawodności jednak w przypadku uruchamiania wielu wystąpień tego samego obrazu na wielu serwerach hosta zwykle każdy kontener (wystąpienie obrazu) ma być uruchamiany na innym serwerze hosta lub maszynie wirtualnej w różnych domenach błędów.

Krótko mówiąc, kontenery oferują korzyści z izolacji, przenośności, elastyczności, skalowalności i kontroli w całym przepływie pracy cyklu życia aplikacji. Najważniejszą korzyścią jest izolacja środowiska zapewniana między rozwiązaniami Dev i Ops.