Cóż, mam nadzieję, że przeczytałeś moje poprzednie blogi Doker gdzie omówiłem podstawy Dockera. Tutaj, w tym blogu Docker Container, będę omawiać, czym są Docker Containers i jak to działa. Głównie będziemy się koncentrować na praktycznych i praktycznych zastosowaniach Dockera.
Poniżej wymieniłem tematy tego bloga Docker Container:
- Dlaczego potrzebujemy kontenerów Docker?
- Jak działają kontenery Docker?
- Przypadki użycia kontenera platformy Docker
Dlaczego potrzebujemy kontenerów Docker?
Nadal dobrze to pamiętam, pracowałem nad projektem. W tym projekcie kierowaliśmy się architekturą mikrousługową. Dla tych z Was, którzy nie wiedzą, co to jest mikrousługa, nie martwcie się, przedstawię wam wprowadzenie.
Ideą mikrousług jest to, że niektóre typy aplikacji stają się łatwiejsze do zbudowania i utrzymania, gdy są podzielone na mniejsze, komponowalne elementy, które współpracują ze sobą. Każdy komponent jest opracowywany oddzielnie, a aplikacja jest wtedy po prostu sumą jego składników składowych.
Rozważ poniższy przykład:
Na powyższym schemacie znajduje się sklep internetowy z oddzielnymi mikroserwisami dla konta użytkownika, katalogu produktów, obsługi zamówień i koszyków.
Cóż, ta architektura ma wiele zalet:
- Nawet jeśli jedna z mikrousług ulegnie awarii, cała aplikacja pozostaje w dużej mierze nienaruszona.
- Łatwiej jest zarządzać
Istnieje również wiele innych korzyści, nie będę szczegółowo omawiać mikrousług w tym poście. Ale wkrótce będę wymyślał również kilka blogów na temat mikrousług.
W tej architekturze używaliśmy maszyn wirtualnych CentOS. Te maszyny wirtualne zostały skonfigurowane przez pisanie długich skryptów. Cóż, konfiguracja tych maszyn wirtualnych nie była jedynym problemem.
Tworzenie takich aplikacji wymaga uruchomienia kilku mikrousług na jednym komputerze. Jeśli więc uruchamiasz pięć z tych usług, potrzebujesz pięciu maszyn wirtualnych na tej maszynie. Rozważ poniższy diagram:
Drugi problem jest dość powszechny, wiem, że wielu z was może się do niego odnieść. Aplikacja działa na laptopie programisty, ale nie działa na etapie testowania ani produkcji. Może to być spowodowane brakiem spójnego środowiska komputerowego. Rozważ poniższy diagram:
Oprócz tego było wiele innych problemów, ale czuję, że te problemy wystarczą, aby wyjaśnić Ci potrzebę kontenerów Docker.
Dowiedz się, w jaki sposób kontenery platformy Docker są lepsze niż maszyny wirtualne
Wyobraź sobie więc, że daję 8 GB pamięci RAM wszystkim moim maszynom wirtualnym i mam 5 mikrousług działających na różnych maszynach wirtualnych. W takim przypadku te maszyny wirtualne będą wymagać 40 GB pamięci RAM. Cóż, teraz wymagam, aby konfiguracja mojego hosta była bardzo wysoka, prawie 44 GB pamięci RAM powinno znajdować się na moim komputerze głównym. Oczywiście nie jest to trwałe rozwiązanie dla takiej architektury, ponieważ marnuję tutaj dużo zasobów.
W porządku, mam dużo zasobów do zmarnowania, ale nadal mam problem z niespójnością w cyklu życia mojego oprogramowania (SDLC). Muszę skonfigurować te maszyny wirtualne zarówno w środowisku testowym, jak i produkcyjnym. Gdzieś w tym procesie niektóre oprogramowanie nie zostało zaktualizowane na serwerze testowym, a zespół programistów używa zaktualizowanej wersji oprogramowania. Prowadzi to do konfliktów.
Co jeśli używam 100 maszyn wirtualnych, to skonfigurowanie każdej maszyny zajmie dużo czasu, a jednocześnie jest podatne na błędy.
Teraz zrozumiemy, czym jest Docker Container i jak działa oraz jak rozwiązuje mój problem.
Co to jest kontener Dockera?
Docker to narzędzie zaprojektowane, aby ułatwić tworzenie, wdrażanie i uruchamianie aplikacji przy użyciu kontenerów.
Możesz utworzyć kontenery Dockera, te kontenery będą zawierały wszystkie pliki binarne i biblioteki wymagane dla twojej aplikacji lub mikrousługi w moim przypadku. Twoja aplikacja znajduje się w kontenerze lub aplikacja została umieszczona w kontenerze. Teraz ten sam kontener może być używany w środowisku Test i Prod.
Kontenery platformy Docker to lekkie rozwiązanie dla maszyn wirtualnych i korzysta z systemu operacyjnego hosta. A co najlepsze, nie musisz wstępnie przydzielać pamięci RAM do kontenera Docker, zajmie to w razie potrzeby. Tak więc dzięki Docker Container nie muszę się martwić marnotrawstwem zasobów.
Zrozummy teraz, jak działa kontener Docker.
Jak działa kontener Docker?
Poniższy diagram jest w zasadzie sposobem korzystania z Dockera. Zakładam, że masz pojęcie o obrazie Docker i pliku Dockerfile.
Chłopaki, wiem, że diagram wygląda na nieco skomplikowany, ale wierzcie mi, że nie jest taki skomplikowany. Poniżej znajduje się wyjaśnienie diagramu, nawet po tym, jak trudno go zrozumieć, możesz skomentować swoje wątpliwości, odpowiem na te pytania jak najszybciej.
- Deweloper najpierw zapisze kod projektu w pliku Docker, a następnie utworzy obraz z tego pliku.
- Ten obraz będzie zawierał cały kod projektu.
- Teraz możesz uruchomić ten obraz platformy Docker, aby utworzyć dowolną liczbę kontenerów.
- Ten obraz platformy Docker można przesłać do centrum Docker (jest to w zasadzie repozytorium w chmurze dla obrazów platformy Docker, możesz zachować je jako publiczne lub prywatne).
- Ten obraz platformy Docker w centrum platformy Docker może zostać pobrany przez inne zespoły, takie jak QA lub Prod.
To nie tylko zapobiega marnowaniu zasobów, ale także zapewnia, że środowisko obliczeniowe znajdujące się w laptopie programisty jest również replikowane w innych zespołach. Czuję, że nie muszę ci mówić, dlaczego potrzebujemy Dockera.
To był jeden ze sposobów użycia tego. Domyślam się, że musicie być ciekawi, w jaki sposób użyłem Dockera do rozwiązania mojego problemu z mikrousługami. Pozwólcie, że przedstawię wam przegląd tego samego.
Poniżej znajduje się wyjaśnienie schematu:
- Po pierwsze, napisaliśmy złożone wymagania w pliku Dockerfile.
- Następnie wypchnęliśmy to na GitHub.
- Następnie użyliśmy serwera CI (Jenkins).
- Ten serwer Jenkins ściągnie go z Gita i zbuduje dokładne środowisko. Będzie to używane na serwerach produkcyjnych, a także na serwerach testowych.
- Wdrożyliśmy go do testowania (dotyczy to wdrażania oprogramowania na serwerach w celach testowych, przed pełnym wdrożeniem w środowisku produkcyjnym) dla testerów.
- Zasadniczo wprowadziliśmy do produkcji dokładnie to, co mieliśmy w zakresie rozwoju, testowania i etapów.
Trzeba będzie uczciwie powiedzieć, że Docker ułatwił mi życie.
Cóż, taka była historia mojej firmy, spójrzmy na studium przypadku z Indiana University. Jak Docker rozwiązał ich problemy.
Studium przypadku Indiana University:
Indiana University to publiczny system uniwersytecki z wieloma kampusami w stanie Indiana w Stanach Zjednoczonych.
Stwierdzenie problemu
Używali niestandardowych skryptów do wdrażania aplikacji na maszynie wirtualnej.
Ich środowisko zostało zoptymalizowane pod kątem starszych aplikacji opartych na języku Java. Ich rozwijające się środowisko obejmuje nowe produkty, które nie są oparte wyłącznie na Javie. Aby zapewnić swoim studentom jak najlepsze doświadczenia, uczelnia musiała przystąpić do modernizacji aplikacji.
Uniwersytet chciał ulepszyć sposób projektowania aplikacji, przechodząc na architekturę opartą na mikrousługach dla swoich aplikacji.
Wymagane było bezpieczeństwo danych uczniów, takich jak numery SSN i dane dotyczące zdrowia uczniów.
Rozwiązanie:
Wszystkie problemy zostały rozwiązane przez Docker Data Center (DDC), rozważ poniższy diagram:
Zaufany rejestr platformy Docker - Przechowuje obrazy Dockera.
Interfejs sieciowy UCP (Universal Control Plane) - Pomaga w zarządzaniu całym klastrem z jednego miejsca. Usługi są wdrażane przy użyciu internetowego interfejsu użytkownika UCP, przy użyciu obrazów platformy Docker, które są przechowywane w DTR (Docker Trusted Registry).
Zespoły operacyjne IT wykorzystują Universal Control Plane do dostarczania zainstalowanego oprogramowania Docker na hostach, a następnie wdrażają swoje aplikacje bez konieczności wykonywania wielu ręcznych kroków w celu skonfigurowania całej infrastruktury.
UCP i DTR integrują się z ich serwerem LDAP, aby szybko zapewnić dostęp do ich aplikacji.
Mam nadzieję, że przeczytaliście poprzednie blogi, aby poznać podstawy Dockera.
Teraz wyjaśnię, jak możemy wykorzystać Docker Compose do aplikacji z wieloma kontenerami.
Docker Hands-On:
Zakładam, że zainstalowałeś Dockera.W tym poście będę używać Docker Compose, poniżej przedstawiłem małe wprowadzenie do Docker Compose.
Docker Compose: Jest to narzędzie do definiowania i uruchamiania wielokontenerowych aplikacji Dockera. Dzięki Docker Compose możesz użyć pliku Compose do skonfigurowania usług aplikacji. Następnie za pomocą jednego polecenia możesz utworzyć i uruchomić wszystkie usługi ze swojej konfiguracji.
Załóżmy, że masz wiele aplikacji w różnych kontenerach i wszystkie te kontenery są ze sobą połączone. Nie chcesz więc uruchamiać każdego z tych kontenerów jeden po drugim. Ale chcesz uruchomić te kontenery za pomocą jednego polecenia. W tym miejscu pojawia się Docker Compose. Dzięki niemu możesz uruchamiać wiele aplikacji w różnych kontenerach za pomocą jednego polecenia. czyli docker-compose up.
Przykład: Wyobraź sobie, że masz różne kontenery, jeden z aplikacją internetową, inny z postgres i inny z uruchomionym redis, w pliku YAML. Nazywa się to plikiem docker compose, stamtąd możesz uruchomić te kontenery za pomocą jednego polecenia.
algorytm planowania okrężnego w c
Weźmy jeszcze jeden przykład:
Załóżmy, że chcesz opublikować bloga, w tym celu użyjesz CMS (System Zarządzania Treścią), a Wordpress jest najczęściej używanym CMS. Zasadniczo potrzebujesz jednego kontenera dla WordPress i potrzebujesz jeszcze jednego kontenera jako MySQL dla zaplecza, ten kontener MySQL powinien być połączony z kontenerem WordPress. Potrzebujemy jeszcze jednego kontenera dla Php Myadmin, który będzie połączony z bazą danych MySQL, w zasadzie służy do dostępu do bazy danych MySQL.
A może wykonam w praktyce powyższy przykład.
Kroki związane:
- Zainstaluj Docker Compose :
- Zainstaluj WordPress: Będziemy używać urzędnika WordPress i MariaDB Obrazy platformy Docker.
- Zainstaluj MariaDB: Jest to jeden z najpopularniejszych serwerów baz danych na świecie. Został stworzony przez oryginalnych programistów MySQL. MariaDB jest rozwijana jako oprogramowanie typu open source i jako relacyjna baza danych zapewnia interfejs SQL umożliwiający dostęp do danych.
- Zainstaluj PhpMyAdmin: Jest to darmowe narzędzie napisane w PHP, przeznaczone do zarządzania MySQL przez Internet.
- Utwórz witrynę WordPress:
Zacznijmy!
Zainstaluj Docker Compose:
Najpierw zainstaluj Python Pip:
sudo apt-get install python-pip
Teraz możesz zainstalować Docker Compose:
sudo pip zainstaluj docker-compose
Zainstaluj WordPress:
Utwórz katalog wordpress:
mkdir wordpress
Wejdź do tego katalogu wordpress:
cd wordpress /
W tym katalogu utwórz plik YAML Docker Compose, a następnie edytuj go za pomocą gedit:
sudo gedit docker-compose.yml
Wklej poniższe wiersze kodu w tym pliku yaml:
wordpress: image: wordpress linki: - wordpress_db: mysql porty: - 8080: 80 wordpress_db: image: mariadb środowisko: MYSQL_ROOT_PASSWORD: edureka phpmyadmin: image: corbinu / docker-phpmyadmin linki: - wordpress_db: mysql porty: - 8181: 80 środowisko: MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: edureka
Wiem, że chcesz, abym wyjaśnił ten kod, więc co zrobię, wezmę małe fragmenty tego kodu i wyjaśnię, co się dzieje.
wordpress_db: ... środowisko: MYSQL_ROOT_PASSWORD: edureka ...
Spowoduje to ustawienie zmiennej środowiskowej w kontenerze wordpress_db o nazwie MYSQL_ROOT_PASSWORD z żądanym hasłem. Obraz MariaDB Docker jest skonfigurowany do sprawdzania tej zmiennej środowiskowej podczas uruchamiania i zajmie się konfiguracją bazy danych z kontem root z hasłem zdefiniowanym jako MYSQL_ROOT_PASSWORD.
wordpress: ... porty: - 8080: 80 ...
Pierwszy numer portu to numer portu na hoście, a drugi numer portu to port wewnątrz kontenera. Tak więc ta konfiguracja przekazuje żądania na porcie 8080 hosta do domyślnego portu serwera WWW 80 wewnątrz kontenera.
phpmyadmin: image: corbinu / docker-phpmyadmin linki: - wordpress_db: mysql porty: - 8181: 80 środowisko: MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: edureka
To pobiera docker-phpmyadmin przez członka społeczności corbinu, łączy go z naszym kontenerem wordpress_db o nazwie mysql (co oznacza, że z wnętrza kontenera phpmyadmin odniesienia do nazwy hosta mysql będą przekazywane do naszego kontenera wordpress_db), ujawnia jego port 80 na porcie 8181 hosta, a na koniec ustawia kilka zmiennych środowiskowych z naszą nazwą użytkownika i hasłem MariaDB. Ten obraz nie pobiera automatycznie zmiennej środowiskowej MYSQL_ROOT_PASSWORD ze środowiska wordpress_dbcontainer, tak jak robi to obraz wordpress. W rzeczywistości musimy skopiować wiersz MYSQL_ROOT_PASSWORD: edureka z kontenera wordpress_db i ustawić nazwę użytkownika na root.
Teraz uruchom grupę aplikacji:
docker-compose up -d
To wszystko, co musisz zrobić. W ten sposób możesz dodać dowolną liczbę kontenerów i połączyć je wszystkie w dowolny sposób.
Teraz w przeglądarce przejdź do portu 8080, używając swojego publicznego adresu IP lub nazwy hosta, jak pokazano poniżej:
localhost: 8080
Wypełnij ten formularz i kliknij zainstaluj WordPress.
Po zakończeniu ponownie odwiedź adres IP swojego serwera (tym razem przy użyciu portu 8181, np. Localhost: 8181). Powita Cię ekran logowania phpMyAdmin:
Śmiało i zaloguj się przy użyciu nazwy użytkownika root i hasła, które ustawiłeś w pliku YAML, a będziesz mógł przeglądać swoją bazę danych. Zauważysz, że serwer zawiera bazę danych WordPress, która zawiera wszystkie dane z instalacji WordPress.
Tutaj kończę mój blog Docker Container. Mam nadzieję, że podobał Ci się ten post. Możesz sprawdzić inne blogi również w serii, która dotyczy podstaw Dockera.
Jeśli uważasz, że ten blog Docker Container jest odpowiedni, zapoznaj się z autorstwa Edureka, zaufanej firmy zajmującej się edukacją online, z siecią ponad 250 000 zadowolonych uczniów rozsianych po całym świecie. Szkolenie Edureka DevOps Certification Training pomaga uczniom zdobyć wiedzę na temat różnych procesów i narzędzi DevOps, takich jak Puppet, Jenkins, Docker, Nagios, Ansible, Chef, Saltstack i GIT do automatyzacji wielu kroków w SDLC.
Masz do mnie pytanie? Wspomnij o tym w sekcji komentarzy, a skontaktuję się z Tobą.