Praktyczne wprowadzenie do kontenerów Docker

Praktyczne wprowadzenie do kontenerów Docker

Popularność Dockera gwałtownie wzrosła, odkąd jest wprowadzenie w 2013 roku. Firmy i osoby fizyczne korzystają teraz lub planują korzystać z niego w lokalu, czy w chmurze. Elastyczność Dockera odwołuje się do programistów, administratorów systemów i zarządzania.

W tym artykule pokazuje, jak zacząć z Dockerem, pokazując podstawowe polecenia, aby wprowadzić Cię do modnego kontenera.

W tym samouczku nauczysz się:

  • Co to jest Docker i jak jest używany.
  • Jak zainstalować Docker w Linux.
  • Jak uruchomić kontenery Docker.

Zastosowane wymagania i konwencje oprogramowania

Wymagania oprogramowania i konwencje linii poleceń Linux
Kategoria Wymagania, konwencje lub wersja oprogramowania
System Dowolny rozkład Linuksa
Oprogramowanie Doker
Inny Uprzywilejowany dostęp do systemu Linux jako root lub za pośrednictwem sudo Komenda.
Konwencje # - Wymaga, aby podane polecenia Linux są wykonywane z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą sudo Komenda
$ - Wymaga, aby podane polecenia Linux zostały wykonane jako zwykły użytkownik niepewny

Podstawowe koncepcje Docker

Tradycyjne platformy wirtualizacyjne, takie jak VirtualBox i VMware, abstrakcja cały komputer, mający na celu izolowanie gospodarz I gość systemy operacyjne i wymagające instalacji całego systemu operacyjnego w gość maszyna wirtualna (VM). Wirtualizacja Dockera ma inne podejście - abstrahuje tylko system operacyjny, co oznacza, że ​​gospodarz i goście dzielą to samo jądro.

Zalety są takie goście (zwany pojemniki) Nie muszę pakować całego systemu operacyjnego, co sprawia, że ​​są lekkie - małe rozmiary i bardzo szybkie do uruchomienia. Poza tym, poprzez bezpośrednią interfejs z systemem operacyjnym hosta, kontenery Docker nie ponoszą kar w tradycyjnej wirtualizacji, co wymaga tłumaczenia połączeń systemowych między systemami operacyjnymi gościa i hosta za pośrednictwem sterowników, które abstrakcyjne wirtualne sprzęt.

Wady są takie, że na przykład nie jest możliwe hosting gościa systemu Windows na hoście Linux, a wszyscy goście dzielą zasoby (CPU, RAM i dysk) na hoście, co oznacza, że ​​niewłaściwy kontener może obniżyć cały serwer. Pewne jest, że Docker nie zamierza zastępować tradycyjnej wirtualizacji, która wciąż ma wiele ważnych scenariuszy. Zapewnia tylko inny sposób uzyskania izolacji aplikacji przy jednoczesnym zmniejszeniu zależności bibliotek, bez utraty wydajności.

Docker pozwala na uruchomienie pojemniki, które działają instancje obrazy. Obraz zawiera dysk ze wszystkimi zależnościami bibliotek wymaganymi do wykonania aplikacji, a kontener zawiera kontekst wykonania. Może być wiele pojemników o tym samym obrazie w tym samym czasie, każdy oddzielony od innych.

Istnieje zalecenie, aby kontener Docker wykonuje tylko jedną aplikację, która często jest błędnie interpretowana do „uruchamiania tylko jednego procesu”. Nie ma problemu z uruchomieniem więcej niż jednego procesu w pojemniku, o ile należą one do tej samej aplikacji. Złożona aplikacja może jednak wymagać wykonywania wielu kontenerów, na przykład jednego dla serwera internetowego (Apache, Nginx), jednej dla aplikacji (PHP-FPM) i jednej dla bazy danych (MySQL, Postgresql, MongoDB ). Te kontenery mogą wykonywać w tym samym lub w różnych hostach. Kontenery w tym samym hoście komunikują się za pośrednictwem sieci wirtualnej zarządzanej przez Docker.



Obrazy dokera są pobierane z repozytorium o nazwie rejestr i są buforowane lokalnie. Jeśli rejestr nie jest określony, Docker spróbuje znaleźć obraz w domyślnym repozytorium, nazywany Docker Hub. Hub Docker zawiera ogromną ilość zdjęć gotowych do użycia przez firmy i osoby fizyczne - i możesz również publikować swoje zdjęcia. Poza tym jest też Sklep Docker, gdzie firmy mogą profesjonalnie zaoferować wyselekcjonowane obrazy swojego oprogramowania. Zaleca się spędzenie czasu na przeglądaniu i naukę, jak działają te repozytoria.

Wystarczy powiedzieć, zainstalujmy dokera i poznaj podstawowe polecenia.

Instalowanie Dockera w Linux

Ubuntu

W Ubuntu Bionic Beaver 18.04, zainstalowanie Dockera jest proste.

# apt Zainstaluj dokera.io 

Debian

Jeśli prowadzisz testowanie debiana lub niestabilne, powyższe polecenie będzie również działać. W przypadku Debian Stable (Stretch) odwiedź nasz silnik Docker na przewodniku instalacyjnym Debian 9 Stretch Linux.

Centos

W Centos 1804 to jeden mniam Komenda.

# mniam instalacji Docker 

Fedora

W Fedorze 28 jest również gotowy do zainstalowania z jednym DNF Komenda.

# DNF instaluj Docker 

Po instalacji Docker

Po jego zainstalowaniu możesz sprawdzić, czy usługa Docker jest uruchomiona.

# Status dokera serwisowego 

Jeśli tak nie jest, zacznij to.

# Service Docker Start 

Po uruchomieniu usługi możesz sprawdzić, czy są jakieś uruchomione kontenery.

# Docker Ps 

Jeśli nie chcesz pisać sudo Aby wchodzić w interakcje z Docker Service, po prostu dodaj swojego użytkownika do Docker Group. Musisz się ponownie zalogować, aby zmiana weszła w życie.

# Usermod -a -g Docker Nazwa użytkownika 

Po zalogowaniu sprawdź, czy jesteś w Docker Group

$ grupy Roger adm cdrom sudo dip plugdev lpadmin sambashare doker 


Teraz nie potrzebujesz sudo w interakcji z silnikiem Docker.

Uruchomienie kontenera Docker

Wykonajmy Witaj świecie pojemnik.

$ Docker Run Hello-World Nie można znaleźć obrazu „Hello-World: Najnowsze” Lokalne najnowsze: pobieranie z biblioteki/Hello-World D1725b59e92d: Pull Complete Digest: SHA256: 0ADD3ACE90ECB4ADBF77777E9AACF18357296E799F81CABC9FDE4709711E49788! Ta wiadomość pokazuje, że instalacja wydaje się działać poprawnie. Aby wygenerować tę wiadomość, Docker podjął następujące kroki: 1. Klient Docker skontaktował się z Docker Daemon. 2. Daemon Docker wyciągnął obraz „Hello-World” z centrum Docker. (AMD64) 3. Demon Docker utworzył nowy kontener z tego obrazu, który uruchamia wykonywalny, który wytwarza wyjście, które aktualnie czytasz. 4. Demon Docker przesyłał to wyjście do klienta Docker, który wysłał go do terminalu. Aby wypróbować coś bardziej ambitnego, możesz uruchomić kontener Ubuntu z: $ Docker Run -it Ubuntu Bash Udostępnianie obrazów, automatyzuj przepływy pracy i więcej z darmowym identyfikatorem Docker: https: // hub.doker.com/Aby uzyskać więcej przykładów i pomysłów, odwiedź: https: // dokumenty.doker.com/get-started/ 
Kopiuj

Polecenie jest naprawdę proste, ale wiele rzeczy się wydarzyło. Po pierwsze, silnik Docker zdał sobie sprawę, że żądany obraz nie był w lokalnej pamięci podręcznej (wiersz 2). Następnie obraz jest wyciągany z rejestru Docker i przechowywany lokalnie (wiersz 3). Wreszcie tworzony jest kontener, wykonywany (wiersz 8) i zakończony. Jeśli spróbujesz ponownie, zauważysz, że wykonanie jest znacznie szybsze, ponieważ zarówno obraz, jak i kontener są buforowane. Teraz sprawdź obrazy przechowywane lokalnie.

$ Docker Image Repository Image Identyfikator obrazu utworzony rozmiar Hello-World Najnowsze 4AB4C602AA5E 2 tygodnie temu 1 1.84KB 
Kopiuj

Zauważ, że Witaj świecie Obraz jest minimalny, z zaledwie 1.84 kb wielkości. To pokazuje, że większość systemu operacyjnego hosta jest używana i że obraz zawiera tylko zależności aplikacji.

Możesz usunąć ten obraz.

$ Docker Images Rm Hello-World $ Docker Images 

Zróbmy teraz coś bardziej ambitnego: Pull and Apache Webserver Image i uruchom pojemnik.

$ Docker Pull Httpd Używając domyślnego znacznika: Najnowsze najnowsze: pobieranie z biblioteki/httpd f189db1b88b3: Pull Complete BA2D31D4E2E7: Pull Complete 23a65f5e3746: Pull Complete 5e8eccbd4bc6: Pull Complete 4c145eec18d8: Pull Complete V1'1c74ff 8631904C6E92918B6C7DD82B72512714E7FBC3F1A1ACE2DE17CB2746C401B8FB Status: Pobrane nowsze obrazy dla httpd: Najnowsze $ dokument Image Repository Imag.84KB HTTPD Najnowsze D595A4011AE3 6 tygodnie temu 178 MB 
Kopiuj

Następnie uruchamiasz pojemnik z tego obrazu.

$ Docker Run -d -p 8000: 80 Httpd DD703B1590A91BDC10488B48798E42DDECD1C6519324A613F4B5563C21874A98 ROGER@SLASH: ~ $ DOCKER ID CELER Contain Contener Ustanowione nazwy status Status Status Status Status Status Porty Dd703b1590a.0.0.0: 8000-> 80/TCP Cranky_torvalds 
Kopiuj

W najprostszej formie polecenie będzie Docker Run Httpd, Ale pojemnik zostanie zatrzymany zaraz po uruchomieniu Apache i żaden port nie zostanie odsłonięty. -D (Odłącz) Opcja jest potrzebna, aby pojemnik pozostał w tle.

-P 8000: 80 Opcją jest mapowanie portu 80 kontenera na port 8000 w hoście, dzięki czemu serwer WebServer w sieci. Domyślnie porty kontenerowe nie są narażone na hosta. Teraz możesz wskazać przeglądarkę internetową http: // localhost: 8000 i zobacz stronę testową Apache.



Domyślna strona Apache wskazująca, że ​​działa

Ok, ale jak zmienić stronę internetową? Musimy połączyć folder z hosta do kontenera /usr/local/apache2/htdocs/ katalog (zobaczymy później, że obraz Apache został zbudowany od Debiana Jessy, niezależnie od smaku Linux Twojego hosta). Zatrzymaj pojemnik i uruchom ponownie.

$ Docker PS $ Docker Stop Cranky_torvalds $ echo „My WebPage”> indeks.html $ Docker Run -d -p 8000: 80 -V "$ pwd":/usr/local/apache2/htdocs/httpd 
Kopiuj

Stworzyliśmy indeks.html plik w bieżącym katalogu w hoście i zmapował ten katalog wewnątrz HTDOC katalog pojemnika z -v przełącznik. Teraz odśwież przeglądarkę internetową.

Indeks.html

Teraz dodatek: eksperyment edycja indeks.html Plik w hoście i odśwież przeglądarkę internetową, bez zmiany stanu kontenera. Tak, ilekroć edytowany plik lub nowy plik jest dodawany do bieżącego katalogu, jest on udostępniany w kontenerze z powodu -v mapowanie.

Utwórz kolejny plik i uzyskaj dostęp do go w przeglądarce.

$ echo „druga strona”> indeks2.html 


Indeks2.html

Po zakończeniu zatrzymaj wykonanie kontenera.

$ Docker Stop Angry_Poincare 

Zauważ, że teraz masz serwer WWW gotowy do wykonania, gdy go potrzebujesz, i nie dotknąłeś żadnego pliku konfiguracyjnego w systemie operacyjnym. Wszystko jest zamknięte na obrazie Apache, który jest buforowany przez Dockera. Ponadto możesz pobrać obraz i uruchomić kontener na dowolnym innym komputerze.

Wniosek

W tym artykule wprowadzono główne koncepcje Docker i niektóre podstawowe polecenia. Mam nadzieję, że rozumiesz korzyści i widzisz, że po zrozumieniu koncepcji nie jest skomplikowane używanie Dockera. Przyszłe artykuły będą prezentować inne funkcje i przypadki użycia.

Więcej w tej serii artykułów Docker

  • Jak wchodzić w interakcje z kontenerami Docker
  • Jak dostosowywać obrazy Docker za pomocą DockerFiles

Powiązane samouczki Linux:

  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
  • Mastering Bash Script Loops
  • Linux Pliki konfiguracyjne: Top 30 Najważniejsze
  • Najlepszy Linux Distro dla programistów
  • Mint 20: Lepsze niż Ubuntu i Microsoft Windows?
  • Rzeczy do zainstalowania na Ubuntu 22.04
  • Pobierz Linux
  • Jak podwójnie rozruch Kali Linux i Windows 10