Jak uruchomić kontenery z Docker Compose

Jak uruchomić kontenery z Docker Compose

Ten artykuł wprowadzi kompozycję Dockera i pokaże, jak go wykorzystać na swoje potrzeby. Zainstalujemy go, napiszmy prosty plik komponowany i uruchomimy kontener.

Następnie zobaczymy, jak uruchomić wiele kontenerów. Następnie zobaczymy, jak budować obrazy, a ostatnio jak korzystać z wielu plików kompozycji do uruchamiania kontenerów w różnych środowiskach, takich jak na przykład rozwój i produkcja.

W tym samouczku nauczysz się:

  • Jak zainstalować komponowanie Docker
  • Jak napisać prosty plik komponowania
  • Jak wykonać polecenia Docker-Compose, aby rozpocząć i zatrzymać kontenery
  • Jak uruchomić wiele kontenerów
  • Jak budować obrazy z Docker Compose
  • Jak zastąpić za pomocą wielu plików komponujących Docker
PhpMyAdmin.

Zastosowane wymagania i konwencje oprogramowania

Wymagania oprogramowania i konwencje linii poleceń Linux
Kategoria Wymagania, konwencje lub wersja oprogramowania
System Ubuntu 18.04
Oprogramowanie Docker komponuje
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

Wstęp



Do tej pory zobaczyliśmy, w jaki sposób Docker jest świetny do zarządzania obrazami i rozpoczęcia kontenerów. Ale często aplikacje wymagają, aby różne pojemniki były w górę i komunikować się ze sobą. Łączenie ich za pośrednictwem sieci, sprawiając, że udostępniają objętości dysku, a przekazywanie zmiennych środowisk może łatwo przekształcić się w sekwencję poleceń, które są trudne do udokumentowania i utrzymania z czasem. Tam wchodzi do Docker Compose. Zacznijmy go instalować, a następnie napisz plik kompozycji.

Instalowanie Docker Compose

W Ubuntu 18.04 Instalowanie kompozytora Docker jest proste:

# apt Zainstaluj kompose dokera 

Aby go przetestować, jest zainstalowane, możesz sprawdzić swoją wersję:

$ Docker-Compose -V Docker-Compose wersja 1.17.1, zbuduj nieznane 

Wersje kompozycji silnika i dokera są ważne, ponieważ ich uwolnienia są częste, a funkcje są dodawane i usuwane. Wersja pokazana powyżej (1.17.1) został wydany w listopadzie 2017 r. Jeśli potrzebujesz nowszej wersji, możesz włączyć repozytorium Universe Ubuntu i uzyskać nowszy pakiet, a nawet pobrać i zainstaluj najnowszą wersję bezpośrednio ze strony internetowej Docker Compose:

# curl -l "https: // github.com/docker/compose/wydania/pobieranie/1.23.2/Docker-Compose-$ (uname -s)-$ (uname -m) "-o/usr/local/bin/Docker-compose # sudo chmod +x/usr/local/bin/Docker-kompose 


Plik komponuje Docker

Docker komponuje plik YAML, który jest zwykle nazwany Kompozycja dokera.yml.

Wersja: „3” usługi: Apache: Image: PHP: 7.3 -apache Container_name: „Apache” porty: - „80:80” wolumeny: - ./www:/var/www/html 
Kopiuj

Na początku wersja składniowa jest informowana jako 3. Następnie w sekcji Usługi określono tylko jeden kontener (Apache) i znaczniki obraz, Contener_name, porty, I wolumeny są używane do opisania, w jaki sposób należy go wykonać.

Teraz utwórz katalog nazwany www i upuść to indeks.html plik w środku.

  Cześć   

Następnie, aby testować PHP, po prostu upuść ten plik do środka www.

 


Docker komponuje polecenia

w górę Polecenie zajmie się wszystkim: Pobierz obrazy z Docker Hub Jeśli nadal nie istnieją w lokalnej pamięci podręcznej, zbuduj niestandardowe obrazy (co nie jest;.

$ Docker -Compose Up -d 

-D Switch instruuje Docker komponuje pojemniki w tle. W przypadku użycia innej nazwy pliku zamiast tego Kompozycja dokera.yml, można go poinformować -F.

Zauważ, że polecenie uruchamiania jest znacznie prostsze niż jest doker Uruchom odpowiednik. Ma jeszcze dwie zalety: nie zmienia się niezależnie od zawartości pliku kompozycji, a jeśli plik kompozycji określa więcej niż jeden kontener, wszystkie zostaną uruchomione. Tylko dla porównania polecenie Docker Run byłoby:

$ Docker run -d --name = 'apache -alone' -p 80:80 -v $ pwd/www:/var/www/html php: 7.3-Apache 

Ponieważ składnia pliku komponowania to YAML, wcięcie ma znaczenie. Jeśli otrzymasz błędy składniowe, sprawdź składnię YAML za pomocą parsera online, jak ten.

Możesz sprawdzić, czy kontener działa.

$ Docker PS Container ID Polecenie obrazu Utworzone porty statusu nazwy 3937D997E029 PHP: 7.3-apache „Docker-Php-Entrypoi…” 8 minut temu w górę 8 minut 0.0.0.0: 80-> 80/tcp Apache 

Teraz dostęp do http: // localhost w preferowanej przeglądarce, a następnie http: // localhost/phpinfo.php.



Uruchamianie wielu kontenerów

Zobaczmy teraz bardziej złożony plik kompozycji. Wyobraźmy sobie, że skonfigurujemy lokalne środowisko, aby opracować aplikację lampową. Potrzebujemy pojemnika z Apache i PHP, kolejnego pojemnika z MySQL i prawdopodobnie pojemnika phpMyAdmin do interakcji z MySQL. Kompozycja dokera.yml będzie:

Wersja: „3” usługi: Apache: Image: PHP: 7.3 -apache Container_name: „Apache” restart: „Zawsze” porty: - „80:80” - „443: 443” tomy: - ./www:/var/www/html - ./php/php.INI:/usr/local/etc/php/php.ini - ./Sites-Enabled:/etc/apache2/Sites-Enabled-Apache-Logs:/var/log/apache2 mysql: image: mariadb: 10.4 Container_name: „MySQl” restart: „Zawsze” wolumine: - MySQL -Data:/var/lib/mysql środowisko: mysql_root_password: somePassword mysql_database: db_site mysql_user: użytkownik mysql_password.8 Nazwa_kontautora: „PhpMyAdmin” Środowisko: PMA_HOST: MYSQL PMA_PORT: 3306 Porty:-'8080: 80' Wolume: Apache-Logs: MySQL-Data: 
Kopiuj

Ten plik komponowany uruchamia trzy kontenery, każdy z nich ma sekcję w ramach usług. Zauważ, że definiujemy niektóre zmienne środowiskowe poniżej środowisko. Uruchom ponownie: Zawsze Definicja polega na tym, że Docker automatycznie uruchamia kontenery po uruchomieniu usługi Docker (na przykład w przypadku ponownego uruchomienia).

Polecenie do rozpoczęcia trzech kontenerów jest takie samo jak w poprzednim prostym przykładzie. Łatwe do zapamiętania, prawda?

$ Docker -Compose Up -d 

Sprawdź, czy pojemniki są tworzone.



$ Docker PS Container ID Polecenie obrazu Utworzone porty statusu Nazwy F76ECE3508FE PHPMYADMIN/PHPMYADMIN: 4.8 "/RUN.SHINGERORDORD… ”20 sekund temu w górę 4 sekundy 9000/TCP, 0.0.0.0: 8080-> 80/TCP PhpMyAdmin 69B1B5054F3D MARIADB: 10.4 "Docker-entrypoint.S… "20 sekund temu w górę 6 sekund 3306/TCP MySQL 6747D7580DAC PHP: 7.3-apache „Docker-Php-Entrypoi…” 2 dni temu w górę 14 sekund 0.0.0.0: 80-> 80/TCP, 0.0.0.0: 443-> 443/TCP Apache 
Kopiuj

Warto zauważyć, że kontenery mogą komunikować się za pomocą swoich nazwisk i uzyskiwania dostępu do siebie bez potrzeby wystawiania swoich portów hosta. Na przykład nie ujawniliśmy portu 3306 usługi MySQL (jak widać na powyższym wyjściu), ale PhpMyAdmin jest w stanie uzyskać dostęp do tego portu. Aby uzyskać dostęp do phpMyAdmin, przejdź do http: // localhost: 8080 i zaloguj się z użytkownikiem i hasłem zdefiniowanym w usłudze MySQL (użytkownik / hasło).

Budowanie obrazów z Docker komponuje

Jeśli chcesz zbudować obraz, zamiast używać istniejącego, po prostu dodaj zbudować etykietka. W poniższym przykładzie mówimy, że Docker komponuje się, aby przyjrzeć się bieżącemu katalogowi dla pliku dokera. Znacznik obrazu zostanie użyty do nazwie nowego obrazu.

Wersja: „3” usługi: Apache: kompilacja: . Obraz: My-Image-Nazwa Container_name: „Apache” Restart: „Zawsze” porty:-„80:80” 
Kopiuj

Zastąpienie za pomocą wielu plików komponujących Docker

Docker Compose ułatwia dostosowanie uruchomienia kontenerów dla różnych środowisk. Wystarczy utworzyć pliki o nazwie o nazwie i uruchomić kontenery określające je. Będą zastąpić poprzednie definicje wykonane w pliku komponowania podstawowego.

Na przykład utwórzmy nazwany plik zastępowania Docker-Compose-Prod.yml i zdefiniuj inne hasło dla MySQL.

Wersja: „3” Usługi: MySQL: Środowisko: mysql_root_password: SomePassword_other MySQL_DATABase: db_site_other mysql_user: user_other mysql_password: hasło_othother 
Kopiuj

Możesz użyć innego hosta, aby uruchomić kontenery. Jeśli używasz tego samego hosta, konieczne jest usunięcie kontenera MySQL i jest to powiązane głośność. W przeciwnym razie zostanie użyty istniejący pojemnik ze starymi poświadczeniami.

$ Docker Stop Mysql $ Docker Rm Mysql $ Docker Volume LS $ Docker Volume RM Directory_Mysql-Data 

A następnie możesz wykonać poniższe polecenie. Ważne jest, aby zachować kolejność plików. Można użyć wielu plików. W naszym przykładzie tylko środowisko Sekcja Mysql usługa zostanie zastąpiona.

$ Docker-Compose -f Docker-Compose.yml -f Docker-Compose-Prod.Yml up -d 

Po sprawdzeniu, że kontenery działają, spróbuj uzyskać dostęp do phpMyAdmin za pomocą nowych poświadczeń.

Wniosek

W tym artykule wprowadzono Docker Compose, poręczne narzędzie do zorganizowania uruchomienia wielu kontenerów w tym samym hoście. Istnieje wiele możliwości, a czytanie instrukcji Compose Compose jest wysoce zalecane. W następnych artykułach zbadamy sposoby na zorganizowanie kontenerów Docker wśród wielu gospodarzy.

Więcej w tej serii artykułów Docker

  • Praktyczne wprowadzenie do konteneró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
  • Jak utworzyć stos lampy na bazie Dockera za pomocą Dockera na…
  • Mastering Bash Script Loops
  • Mint 20: Lepsze niż Ubuntu i Microsoft Windows?
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
  • Rzeczy do zainstalowania na Ubuntu 22.04
  • Jak zainstalować Debiana na istniejącym kontenerze Luksa
  • Jak zainstalować i skonfigurować CMS Ghost na Ubuntu
  • Samouczek debugowania GDB dla początkujących