Jak uruchomić kontenery z Docker Compose
- 3453
- 905
- Maurycy Napierała
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
Zastosowane wymagania i konwencje oprogramowania
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