Co to jest Docker?
Przed rozpoczęciem szybkiego przewodnika po kontenerach platformy Docker przyjrzyjmy się, jak nasz zespół opracowuje i wdraża aplikacje. Krótko opiszemy również niektóre wyzwania, przed którymi stoją nasze zespoły.
W proces tworzenia aplikacji i zarządzania nimi w firmie zwykle jest zaangażowany co najmniej jeden zespół. Istnieje zespół programistyczny, który tworzy oprogramowanie i zespół operacyjny odpowiedzialny za wdrażanie tych aplikacji. Zespół operacyjny jest również odpowiedzialny za zarządzanie infrastrukturą hostingu aplikacji.
Załóżmy na przykład, że opracowujemy portal śledzenia zamówień dla różnych placówek firmy do użycia. Kilka środowisk hostuje nasze aplikacje podczas procesu tworzenia i publikowania aplikacji. Najpierw zespół programistyczny opracowuje i testuje oprogramowanie w środowisku programistycznym. Z tego miejsca oprogramowanie jest wdrażane w środowisku kontroli jakości, a następnie w środowisku przedprodukcyjnym i w docelowym środowisku produkcyjnym.
Istnieje kilka wyzwań, które należy wziąć pod uwagę w poprzednim scenariuszu:
Zarządzanie środowiskami hostingu
Wszystkie rodzaje środowisk wymagają zarządzania oprogramowaniem i sprzętem. Musimy mieć pewność, że w każdym z nich zarówno zainstalowane oprogramowanie, jak i skonfigurowany sprzęt są takie same. Musimy również skonfigurować w sposób spójny i łatwo powtarzalny kilka aspektów, takich jak dostęp do sieci, magazyn danych i zabezpieczenia środowiska.
Ciągłość dostarczania oprogramowania
Wdrażanie aplikacji w naszych środowiskach musi odbywać się spójnie. Każdy pakiet wdrożeniowy musi zawierać wszystkie pakiety systemowe, pliki binarne, biblioteki, pliki konfiguracji i inne elementy, które zapewniają w pełni funkcjonalną aplikację. Musimy się również upewnić, że wszystkie te zależności są zgodne z wersjami oprogramowania i architekturą.
Wydajne użycie sprzętu
Każda wdrożona aplikacja musi działać w taki sposób, aby była odizolowana od innych aplikacji uruchomionych na tym samym sprzęcie. Chcemy, aby na serwerze mogła działać więcej niż jedna aplikacja, aby jak najlepiej wykorzystać zasoby, a jednocześnie nie wpływać negatywnie na inne aplikacje.
Przenośność aplikacji
Możliwość przenoszenia aplikacji jest istotna z kilku powodów. Środowisko hostingu może zakończyć się niepowodzeniem lub może być konieczne skalowanie aplikacji w poziomie. W obu przypadkach potencjalny wynik to ponowne wdrożenie oprogramowania w nowym środowisku. Chcemy przenieść oprogramowanie z jednego hosta do innego, nawet jeśli podstawowa infrastruktura jest inna. Takie przeniesienie musi nastąpić tak szybko, jak to możliwe, aby skrócić przestoje dla naszych klientów.
Zanim przyjrzymy się funkcjom platformy Docker, które pomagają rozwiązać te problemy, omówimy kilka pojęć i zapoznamy się z krótkim omówieniem architektury platformy Docker.
Co to jest kontener?
Kontener to luźno izolowane środowisko, w którym można kompilować i uruchamiać pakiety oprogramowania. Te pakiety oprogramowania obejmują kod i wszystkie zależności umożliwiające szybkie i niezawodne uruchamianie aplikacji w dowolnym środowisku obliczeniowym. Nazywamy takie pakiety obrazami kontenerów.
Obraz kontenera staje się jednostką używaną do dystrybucji naszych aplikacji.
Co to jest konteneryzacja oprogramowania?
Konteneryzacja oprogramowania to metoda wirtualizacji systemu operacyjnego używana do wdrażania i uruchamiania kontenerów bez używania maszyny wirtualnej. Kontenery mogą działać na sprzęcie fizycznym, w chmurze, na maszynach wirtualnych i w wielu systemach operacyjnych.
Co to jest Docker?
Docker to platforma konteneryzacji służąca do tworzenia, dostarczania i uruchamiania kontenerów. Platforma Docker nie używa funkcji hypervisor, więc jeśli tworzysz i testujesz aplikacje, możesz uruchomić platformę Docker na komputerze stacjonarnym lub laptopie. Wersja klasyczna platformy Docker obsługuje systemy Linux, Windows i macOS. Platforma Docker jest dostępna dla produkcyjnych środowisk serwerowych, w tym wielu wariantów systemów Linux i Microsoft Windows Server 2016 oraz nowszych wersji. Wiele chmur, w tym platformy Azure, obsługuje platformę Docker.
Architektura platformy Docker
Platforma Docker obejmuje kilka składników, dzięki którym możliwe jest kompilowanie i uruchamianie konteneryzowanych aplikacji oraz zarządzanie nimi.
Aparat platformy Docker
Aparat platformy Docker obejmuje kilka składników skonfigurowanych jako implementacje typu klient-serwer, w których klient i serwer działają jednocześnie na tym samym hoście. Klient komunikuje się z serwerem przy użyciu interfejsu API REST, który umożliwia klientowi również komunikację z wystąpieniem serwera zdalnego.
Niektóre strzałki pokazują komunikację między serwerem platformy Docker, uruchomionymi kontenerami i przechowywanymi obrazami kontenerów. Te strzałki wskazują, w jaki sposób serwer platformy Docker ładuje przechowywane obrazy kontenerów i zarządza uruchomionymi kontenerami.
Klient platformy Docker
Istnieją dwie alternatywy dla klienta platformy Docker: aplikacja wiersza polecenia o nazwie lub aplikacja oparta na graficznym interfejsie użytkownika (GUI) o nazwie docker
Docker Desktop. Zarówno interfejs wiersza polecenia, jak i program Docker Desktop współdziałają z serwerem platformy Docker. Polecenia docker
z interfejsu wiersza polecenia lub programu Docker Desktop używają interfejsu API REST platformy Docker do wysyłania instrukcji do lokalnego lub zdalnego serwera i działają jako podstawowy interfejs używany do zarządzania kontenerami.
Serwer platformy Docker
Serwer platformy Docker jest demonem o nazwie dockerd
. Demon dockerd
odpowiada na żądania klientów za pośrednictwem interfejsu API REST platformy Docker i może wchodzić w interakcje z innymi demonami. Serwer platformy Docker jest również odpowiedzialny za śledzenie cyklu życia naszych kontenerów.
Obiekty platformy Docker
Wdrożenia kontenerów będą obsługiwane przez kilka obiektów, które utworzysz i skonfigurujesz. Są to obiekty sieciowe, woluminy magazynu, wtyczki i inne obiekty usług. W tym miejscu nie będziemy omawiać wszystkich tych obiektów, ale warto pamiętać, że te obiekty są elementami, które możemy tworzyć i wdrażać w miarę potrzeb.
Docker Hub
Docker Hub to rejestr kontenerów platformy Docker oprogramowania jako usługi (SaaS). Rejestry platformy Docker to repozytoria, których używamy do przechowywania i dystrybuowania tworzonych obrazów kontenerów. Docker Hub to domyślny publiczny rejestr, który służy do zarządzania obrazami na platformie Docker.
Należy pamiętać, że można skorzystać z utworzonego przez sienie prywatnego rejestru platformy Docker. Można też użyć jednej z wielu dostępnych opcji dostawców usług w chmurze. Na przykład można użyć usługi Azure Container Registry do przechowywania obrazów kontenerów do użycia w kilku usługach z obsługą kontenerów platformy Azure.