Różnica między dockerfile a docker-compose Przyjrzyjmy się krótko procesowi użytkowania dockera, który dzieli się na budowanie obrazów i uruchamianie kontenerów.
Konstrukcja obrazu: czyli stworzenie obrazu zawierającego środowisko, kod programu itp. potrzebne do instalacji i działania. Proces tworzenia odbywa się za pomocą pliku docker.
Uruchamianie kontenera: Kontener jest uruchamiany przez pobranie zbudowanego obrazu i uruchomienie usługi przez serię instrukcji (takich jak mapowanie portów, zewnętrzne montowanie danych, zmienne środowiskowe itp.). Dla pojedynczego kontenera można to uruchomić przez docker run.
Jeśli wymaga uruchamiania wielu kontenerów (np. orkiestracja usług), może być zaimplementowany za pomocą docker-compose, który łatwo uruchamia wiele kontenerów jako usługę (oczywiście tylko jeden) i pełni funkcję skalowania (skalowania usług).
Krótkie podsumowanie:
1.dockerfile: buduj obraz;
2. Docker run: Uruchomić kontener;
3. docker-compose: Rozpocznij usługę;
Zacznij od początku. Jeśli nie używasz Dockera, jak zbudować WordPressa? Najpierw znajdź serwer, załóż, że jego system operacyjny to Ubuntu, a potem krok po kroku podążaj za dokumentacją, wpisując polecenie i zapisując konfigurację, prawda? A co z używaniem dockera? Po prostu znajdź serwer, niezależnie od systemu operacyjnego, o ile obsługuje dockera, dockera, Ubuntu, docker pobiera najnowszy obraz Ubuntu z oficjalnego źródła, możesz to sobie wyobrazić jak otwarcie maszyny wirtualnej Ubuntu i instalację krok po kroku, tak jak powyżej.
Jednak ta instalacja ma istotny minus: po usunięciu kontenera nie wykonujesz żadnych prac. Oczywiście możesz użyć docker commit, aby zapisać go jako obraz, tak aby mógł być ponownie użyty.
Ale obraz jest zazwyczaj duży, a jeśli udostępniasz tylko obraz, inni nie będą wiedzieć, co się na nim znajduje, co nie sprzyja udostępnianiu i ponownemu wykorzystaniu. Intuicyjnym rozwiązaniem jest napisanie skryptu, który zapisuje cały proces instalacji, tak aby po ponownej instalacji można było go wykonać. Dockerfile to jeden z takich skryptów, który dokumentuje proces tworzenia obrazu. Z Dockerfile po prostu uruchom docker build. Możesz utworzyć obraz, a plik Dockera to plik tekstowy, który bardzo łatwo modyfikować.
Teraz, gdy masz obraz WordPressa, wystarczy uruchomić docker, żeby WordPress działał.
Jeśli to tylko WordPress, to wystarczy. Jednak często do uruchomienia usługi potrzeba wielu obrazów, takich jak nginx, mysql, mail service itp. Częściej nginx, mysql i smtp to wszystkie obrazy, które współpracują ze sobą, aby służyć projektowi. Docker-Compose jest rozwiązaniem tego problemu. Informacje o tym, jakie obrazy potrzebuje Twój projekt, jak skonfigurować każdy obraz, które wolumeny zamontować i tak dalej, znajdują się w docker-compose.yml. Aby rozpocząć usługę, wystarczy wykonać docker-compose up, a docker-compse zatrzymać/zejść, aby ją zatrzymać
Krótko mówiąc, plik Dockera rejestruje proces budowy pojedynczego obrazu, docker-compse.yml rejestruje proces budowy projektu (zazwyczaj wiele obrazów).
Powiedziałeś, że niektóre tutoriale używają dockerfile+docker-compose, ponieważ sam docker-compose.yml nie zawiera informacji o budowie obrazu, a jeśli obraz zostanie pobrany z rejestru dockera, to dockerfile nie jest potrzebny; Jeśli obraz musi zostać zbudowany, należy dostarczyć plik Docker.
docker-composeTo jest pojemnik do orkiestracji. Na przykład masz obraz PHP, obraz mysql i obraz nginx. Jeśli nie ma docker-compose, to za każdym razem przy uruchamianiu musisz wpisać parametry startowe każdego kontenera, zmienne środowiskowe, nazwę kontenera, określić parametry linków różnych kontenerów oraz wykonać serię operacji, co jest dość uciążliwe. Po użyciu docker-composer możesz zapisać te polecenia w docker-composer.yml pliku jednocześnie, a za każdym razem, gdy uruchamiasz całe środowisko (w tym 3 kontenery), wystarczy wpisać polecenie docker-composer up.
dockerfileRola polega na budowaniu lustrzanego odbicia od podstaw. Zawiera środowisko, kod programu itp. niezbędne do instalacji i działania. Proces tworzenia odbywa się za pomocą pliku docker. Dockerfile – Przygotowany do polecenia docker build do utworzenia samodzielnego obrazu, który może być również używany w docker-compose do budowania na żywo docker-compose.yml - Skrypt do docker-compose, który może zarządzać wieloma kontenerami jednocześnie, w tym relacjami między nimi, czy budować na oficjalnym obrazie, czy samodzielnie, różnymi definicjami portów sieciowych, definicjami przestrzeni pamięci itp |