Terug naar blog

Hoe Docker Compose te installeren en configureren op Ubuntu 20.04

Hoe Docker Compose te installeren en configureren op Ubuntu 20.04

Inleiding

Containerisatie heeft de afgelopen jaren een enorme vlucht genomen in de software-techwereld. Dit kan worden toegeschreven aan Docker dat een containerplatform is dat het beheer van processen binnen containers vereenvoudigt.

Containers zijn lichtgewicht, gevirtualiseerde, draagbare, softwaregedefinieerde gestandaardiseerde omgevingen waarmee software geïsoleerd kan draaien van andere software die op de fysieke hostmachine draait. Dankzij deze draagbaarheid kunnen ontwikkelaars hun applicaties modulariseren in geïsoleerde services. Bovendien kunnen ze onafhankelijk worden aangeboden, wat ruimte biedt voor schalen.

Hoewel het opsplitsen van een applicatie in meerdere services absoluut geweldig is, brengt het de overhead met zich mee van het beheren van verschillende containers. Je moet ervoor zorgen dat ze communiceren, tegelijkertijd opstarten en afsluiten. Dankzij een tool genaamd Docker Compose, wordt dit een eenvoudige taak. Met Docker Compose kunnen ontwikkelaars Docker-applicaties met meerdere containers uitvoeren met behulp van regels die zijn gedefinieerd in een YAML bestand. Het YAML-bestand bevat definities voor de applicatieservices en hoe ze datavolumes en netwerken kunnen delen. Zodra je de services hebt gedefinieerd, kun je ze allemaal met één enkele opdracht opstarten. In deze handleiding laten we je zien hoe je Docker Compose installeert, configureert en ermee aan de slag gaat op Ubuntu 20.04.

Vereisten

Stap 1: Docker Compose installeren

We downloaden de nieuwste stabiele versie van Docker Compose van de officiële GitHub-repository. Je kunt de nieuwste versie vinden op de releases-pagina, op het moment van schrijven van deze handleiding is de nieuwste versie 1.28.5.

Log eerst in op je Ubuntu-server met de niet-root sudo-gebruiker en voer de volgende opdracht in. Hiermee wordt de nieuwste release (1.28.5) gedownload en wordt het uitvoerbare bestand opgeslagen in de /usr/local/bin/docker-compose map. Dit maakt het wereldwijd toegankelijk als docker-compose:

Zodra het is gedownload, voer je de volgende opdracht in om de juiste machtigingen in te stellen zodat de docker-compose-opdracht kan worden uitgevoerd:

Controleer nu of de installatie is geslaagd en of de opdracht kan worden aangeroepen door de volgende opdracht uit te voeren:

Je zou een uitvoer als deze moeten krijgen:

docker compose version

Dit bevestigt dat Docker Compose met succes op je systeem is geïnstalleerd.

Stap 2: Het docker-compose.yml-bestand maken

Om je te helpen begrijpen hoe je met docker-compose.yml, werkt, configureren we een webserveromgeving met behulp van de officiële Nginx-image van Docker Hub. Eenmaal geïmplementeerd, zouden we een eenvoudige HTML-pagina vanuit de container moeten kunnen aanbieden.

We maken onze werkmap aan in de thuismap van waaruit we zullen werken. Voer de volgende opdracht in om de map te maken:

Ga vervolgens naar de map:

Eenmaal in de map maak je een applicatiemap die de document-root zal zijn voor de Nginx-omgeving. We kunnen deze map app:

  • Een HTML-pagina maken

Laten we de nano-teksteditor gebruiken om het index.html-bestand in de app-map te maken:

Voeg vervolgens de volgende HTML-code toe aan het bestand:

Om het bestand op te slaan, drukt u op CTRL +O, ENTER. Sluit vervolgens met CTRL +X. Vervolgens maken we het docker-compose.yml-bestand in de hoofdmap van ons project.

  • De HTML-pagina hosten met docker-compose

Voer vervolgens de volgende opdracht uit om het bestand te openen met de nano-editor:

Voeg daarna het volgende codefragment toe aan het bestand:

Het docker-compose.yml bestand begint met het versienummer dat Docker Compose vertelt welke configuratieversie we gebruiken. Volg deze link om meer te leren over Docker Compose-versiebeheer.

Na het versienummer hebben we het services-blok dat de services bevat die de omgeving vormen. In deze handleiding hebben we slechts één service gespecificeerd genaamd webserver. De webserver service zal de nginx:alpine image gebruiken. We hebben ook de poortdoorsturing gedefinieerd 8000:80. Dit betekent dat alle verzoeken van poort 8000 op de hostmachine worden doorgestuurd naar de webserver-container op poort 80, waar Nginx draait.

De volumes-richtlijn stelt u in staat om een gedeeld volume te maken tussen de hostmachine en de container die we kunnen gebruiken om gegevens te behouden. In ons yml codefragment, delen we de lokale app map met de container. Binnen de container wordt deze geplaatst op de /usr/share/nginx/html locatie. Hiermee wordt de standaard document root voor Nginx overschreven. U kunt het bestand nu opslaan en sluiten.

Tot nu toe hebt u uw voorbeeld-HTML-webpagina en het docker-compose.yml-bestand gemaakt met instructies om een gecontaineriseerde webserveromgeving te bouwen. Laten we in de volgende stap kijken hoe we deze installatie kunnen starten.

Stap 3: Het Docker Compose-commando uitvoeren

In deze stap voeren we het commando uit om onze gecontaineriseerde omgeving te starten. Hieronder staat het enkele commando dat het downloadproces van de Docker-images initialiseert, een container voor de webserver-service maakt en de gecontaineriseerde omgeving op de achtergrond start:

Docker is ontworpen om snel en efficiënt te zijn, dus wanneer u het bovenstaande commando uitvoert, controleert het eerst uw lokale systeem op de gedefinieerde image. Als deze ontbreekt, wordt deze opgehaald uit de Docker Hub-repository. Het zou een uitvoer moeten tonen die vergelijkbaar is met dit:

 compose up

Wanneer het commando klaar is met uitvoeren, start het de containeromgeving op de achtergrond. U kunt controleren of deze actief is met het commando:

U zou een vergelijkbare uitvoer moeten krijgen:

 compose ps

Als u naar het IP-adres of de domeinnaam van uw server navigeert en poort 8000 toevoegt, d.w.z. server_domain_or_IP:8000 zou u de voorbeeld-HTML-pagina moeten kunnen zien die we hebben gemaakt:

docker compose webpage

Als u zich herinnert, hebben we een gedeeld volume ingesteld tussen de container en het hostsysteem. Dit houdt de bestanden in de container gesynchroniseerd met de bestanden op het hostsysteem. Dus als u een wijziging aanbrengt in het index.html bestand, wordt dit automatisch gesynchroniseerd met de container en weerspiegeld wanneer u de pagina in de browser opnieuw laadt. U kunt het proberen met de nano-editor. Laten we in de volgende stap nog wat meer commando's leren.

Stap 4: Aanvullende Docker Compose-commando's voor het beheren van containeromgevingen

Nu u met succes een webpagina hebt geïmplementeerd met het enkele docker-compose-up-commando, laten we enkele aanvullende commando's bekijken die nuttig kunnen zijn bij het beheren van gecontaineriseerde omgevingen.

We beginnen met het logs-commando. Logs kunnen cruciaal zijn wanneer u problemen met uw applicatie oplost. Voer eerst het volgende commando uit om de logs te bekijken die door de Nginx-container zijn geproduceerd:

Hier is een voorbeeld van de uitvoer van de logs:

 logs

U kunt de uitvoering van de omgeving pauzeren zonder de status van de containers te wijzigen met het commando:

 compose pause

Gebruik vervolgens het volgende commando om de uitvoering te hervatten:

docker compose unpause

Mogelijk wilt u de containers stoppen zonder hun gegevens te vernietigen. Gebruik hiervoor het volgende commando:

stop

Om de containers, netwerken en volumes die bij de gecontaineriseerde omgeving horen te vernietigen, gebruikt u het commando:

docker compose down

Houd er rekening mee dat het bovenstaande commando de basisimages die door Docker Compose worden gebruikt om de omgeving te starten, niet verwijdert. Dit zorgt voor snellere builds wanneer je je omgeving opstart, omdat er op de lokale machine wordt gezocht naar overeenkomstige images. Als je de basisimage volledig wilt verwijderen, moet je dit in het commando specificeren. Voor ons voorbeeld kunnen we de nginx:alpine image verwijderen met het commando:

 image remove

Ten slotte kun je meer commando's vinden in de officiële Docker Compose Command-line reference documentatie.

Conclusie

In deze handleiding heb je Docker Compose geïnstalleerd op Ubuntu 20.04, een gecontaineriseerde omgeving gemaakt op basis van een Nginx-webserverimage, en geleerd hoe je de verschillende services kunt beheren met behulp van Docker Compose-commando's.

Als je wilt leren hoe je een echte dynamische applicatie implementeert die afhankelijk is van verschillende containers, lees dan onze handleiding over Laravel, Nginx en MySQL implementeren met Docker Compose. Je kunt ook een volledige lijst van docker-compose-commando's vinden in de officiële Docker Compose-documentatie.

Veel plezier met computeren!

author

Pranay Kapgate

Auteur · CloudSigma

Preslav Dobrev is een creatief ontwerper bij CloudSigma, met de nadruk op een consistente bedrijfsidentiteit door middel van traditionele en innovatieve marketingkanalen. Hij is bedreven in het samenvoegen van artistieke visie met strategische marketing om impactvolle merkverhalen te creëren.

Reacties

Nog geen reacties. Wees de eerste.