Jednym z częstych problemów, z którymi borykają się użytkownicy Dockera,
jest podjęcie decyzji o wyborze odpowiedniego rodzaju kontenera: czy korzystać z WSL 2 czy Hyper-V, i czy wybrać
kontener oparty na systemie Linux czy Windows. Ta kwestia często wiąże się z oceną specyficznych wymagań
środowiskowych i zabezpieczeń, a także preferencji w zakresie kompatybilności i wydajności.
Przyjrzymy się zatem, jakie cechy charakterystyczne posiadają wymienione rodzaje kontenerów.
Linux w kontenerze
Linux, będący otwartym systemem operacyjnym, dominuje w świecie kontenerów Docker. Dzięki swojej lekkości,
wszechstronności i szerokiej kompatybilności, kontenery Linux stanowią fundament wielu aplikacji.
Oto kilka przykładów:
-
Aplikacje i mikroserwisy — Jednym z najczęstszych zastosowań kontenerów Linux jest hostowanie aplikacji internetowych
i usług API. Kontenery te mogą zawierać aplikacje Spring Boot, jak również mikroserwisy.
Każdy mikroserwis może być pakowany i uruchamiany jako oddzielny kontener.
To ułatwia zarządzanie, skalowanie i aktualizowanie poszczególnych mikroserwisów.
-
Narzędzia deweloperskie — Kontenery Linux są często używane do tworzenia spójnych, przenośnych i
izolowanych środowisk deweloperskich. Narzędzia takie jak środowiska programistyczne, systemy kontroli
wersji i narzędzia CI/CD (Continuous Integration/Continuous Deployment) są często pakowane w kontenery.
-
Bazy danych — Konteneryzacja baz danych takich jak MySQL, PostgreSQL czy MongoDB jest popularna w
środowiskach deweloperskich i testowych, zapewniając łatwą replikację i skalowalność.
-
Systemy kolejkowania wiadomości — Kontenery mogą być używane do uruchamiania systemów zarządzania kolejkami
wiadomości, takich jak RabbitMQ czy Kafka, które są kluczowe w aplikacjach wymagających niezawodnego
przetwarzania wiadomości.
-
Orkiestracja i automatyzacja — Narzędzia takie jak Kubernetes, Docker Swarm czy Ansible, używane do
automatyzacji wdrażania, skalowania i zarządzania aplikacjami kontenerowymi, często działają na kontenerach
Linux.
Backend WSL 2
Na stronach Docker są dostępne dwie opcje instalacji Docker Desktop na Windowsie, które różnią się podstawową
technologią używaną do uruchamiania kontenerów: backend WSL 2 (Windows Subsystem for Linux 2) i backend Hyper-V z
kontenerami Windows.
Windows Subsystem for Linux 2 (WSL 2) to nowsza wersja Windows Subsystem for Linux, która pozwala na
uruchamianie środowiska Linuxowego bezpośrednio na Windowsie. WSL 2
używa prawdziwego jądra Linux
i oferuje lepszą wydajność oraz kompatybilność z aplikacjami Linux w porównaniu do swojego poprzednika, WSL 1.
WSL zapewnia płynne działanie między środowiskiem Windows a kontenerami Linux, umożliwiając łatwe przechodzenie między
nimi.
Windows w kontenerze
Kontenery Windows stanowią kluczowe rozwiązanie dla specyficznych aplikacji wymagających
środowiska Windows, takich jak aplikacje .NET czy IIS. Choć mniej powszechne niż kontenery Linux, oferują one
nieocenioną wartość w określonych scenariuszach.
-
Aplikacje .NET Framework — Aplikacje zbudowane przy użyciu starszych wersji platformy .NET
Framework często wymagają środowiska Windows do uruchomienia. Kontenery Windows mogą zawierać aplikacje
napisane w .NET Framework, które wymagają środowiska Windows do działania.
-
Aplikacje IIS (Internet Information Services) — IIS to popularny serwer internetowy od Microsoft, który jest
używany do hostowania stron i aplikacji internetowych. Kontenery Windows mogą być używane do wdrażania i
zarządzania aplikacjami webowymi działającymi na IIS.
-
Windows Services — Usługi Windows, które są aplikacjami działającymi w tle, można umieszczać w
kontenerach Windows, aby zapewnić ich lepszą zarządzalność i skalowalność.
-
Baza danych SQL Server — Microsoft SQL Server jest popularnym systemem zarządzania bazami danych,
który działa na Windows. Kontenery Windows mogą być używane do uruchamiania instancji SQL Server, co ułatwia
wdrożenie i testowanie.
Backend Hyper-V
Hyper-V jest technologią wirtualizacji opartą na hipernadzorze, która jest oferowana przez Microsoft.
Ta opcja pozwala na uruchamianie kontenerów, które są
oparte na systemie Windows.
Hyper-V jest dostępny tylko w Windows 10/11 Professional, Enterprise, lub Education, więc nie można go używać na
wersji Home.
Dzięki Hyper-V, kontenery Windows działają w izolowanym środowisku, co zapewnia bezpieczeństwo i stabilność. Jest to
szczególnie ważne w przypadku uruchamiania aplikacji wymagających specyficznych funkcji systemu Windows.
WSL2 czy Hyper-V?
Ostateczny wybór konkretnego rozwiązania zależy od twoich konkretnych wymagań i środowiska pracy.
Na przykład możesz przygotowywać projekt systemu, w którym centralnym elementem jest aplikacja webowa stworzona z wykorzystaniem
Spring
Boot, współpracująca z mikroserwisem poprzez
Apache Kafka.
Zarówno aplikacja Spring Boot, jak i mikroserwis, mają być uruchomione na serwerze
Apache Tomcat.
Do efektywnego uruchomienia i zarządzania tym środowiskiem, najlepiej
użyć Dockera z wykorzystaniem
WSL 2.
Oferuje on wygodne środowisko dla aplikacji opartych na Linuxie, co jest idealne do
uruchamiania zarówno Spring Boot, jak i mikroserwisów komunikujących się przez Kafkę, które są często hostowane w
środowiskach Linux.
W przypadku gdy potrzebujesz wyższego poziomu izolacji i bezpieczeństwa, warto rozważyć użycie Hyper-V. Ta technologia
wirtualizacji oferuje silniejszą izolację na poziomie maszyny wirtualnej, co jest kluczowe w środowiskach o
zwiększonych wymaganiach dotyczących bezpieczeństwa i oddzielenia poszczególnych aplikacji.
Autor: Jarek Klimas
Data: 10 grudnia 2023
Labele: Backend, Poziom średniozaawansowany, Java
Czy informacje, które otrzymałeś, były pomocne?
Jeśli tak, zapraszam Cię do podarowania mi kawy.
Topowe Materiały
Docker: Home Page
Docker: Downlaoad and install
Docker: Get Started with Docker
Docker: Kickstart Your Spring Boot Application Development
Spring IO: Container Images
Spring IO: Spring Boot Docker
Baeldung: Docker Guide
Baeldung: Creating Docker Images with Spring Boot
Baeldung: Introduction to Docker Compose
Baeldung: Docker Compose Support in Spring Boot 3
Udemy: Docker od podstaw - dla programistów i nie tylko
Udemy: Docker & Kubernetes: The Practical Guide [2023 Edition]