Dockerisatie heeft het implementatie- en automatiseringsproces in de software-industrie opnieuw gedefinieerd. Sinds de oprichting heeft het Docker-team er voortdurend naar gestreefd om geautomatiseerde implementatie naadloos te laten verlopen. Containerisatietechnologie maakt niet alleen snelle applicatieontwikkeling en efficiëntie mogelijk, maar bespaart ook tijd en zware inspanningen. Onverslaanbare functionaliteiten zoals het orkestreren, definiëren en uitvoeren van multi-containerapplicaties maken Docker samen een favoriete keuze voor ontwikkelaars.
Docker-containers en -images
Als u zich verder in Docker verdiept, is het essentieel om de basiskennis op te frissen. Begrijpen hoe Docker werkt kan lastig zijn als u er geen ervaring mee hebt. In dit gedeelte gaan we een aantal concepten definiëren die essentieel zijn voor beginners. Als u denkt dat u bekend bent met deze concepten, kunt u deze gerust overslaan en doorgaan naar het volgende gedeelte. U kunt ook een kijkje nemen in onze uitgebreide gids die de fundamentele Docker-concepten uitlegt.
-
Docker-images
Docker-images zijn een verzameling alleen-lezen bestanden. Zodra u Docker-images hebt gemaakt, kunt u ze niet meer wijzigen, hoewel verwijderen wel is toegestaan. We gebruiken een Docker-image om een of meer Docker-containers te maken op basis van onze behoeften. Gebruik de volgende opdracht om het aantal images te controleren dat op uw systeem wordt uitgevoerd:
|
1 |
$docker images |
Wanneer u images ophaalt uit een externe registry zoals Docker Hub, downloadt u bestanden en mappen. Gebruik de volgende opdracht om een image op te halen:
|
1 |
$docker pull (naam van de image) |
-
Docker-containers
Docker-images zijn de blauwdruk van Docker-containers. Technisch gezien is een Docker-container een instantie van een Docker-image. Stel dat een Docker-image een ouder is, dan is een Docker-container het kind. In tegenstelling tot Docker-images die u eenmalig kunt maken, kunt u meerdere containers maken met één enkele image. Gebruik de volgende opdracht om de lijst met images te controleren die op uw systeem worden uitgevoerd:
|
1 |
$docker ps |
Gebruik de volgende opdracht om een container op te halen:
|
1 |
$docker pull (naam van de container) |
-
Hoe Docker-images en -containers werken
Docker-images en -containers werken hand in hand om het potentieel van Docker te benutten. Een enkele container wordt gebouwd met behulp van de Docker-image via de run-opdracht. Wanneer u een Docker-container maakt, wordt er een nieuwe laag gemaakt die bekend staat als de Container Layer. De nieuw gemaakte laag bevat de applicatie en de bijbehorende afhankelijkheden. Elke container die u maakt heeft een andere lees-/schrijf-Container Layer, en alle wijzigingen die in de Docker-container worden aangebracht, worden automatisch weerspiegeld in de Container Layer. Let op: als u besluit een container te verwijderen, verliest u ook de Container Layer.
Maak kennis met Docker Compose
Docker Compose is een tool voor containerbeheer waarmee u al uw Docker-containers kunt configureren en orkestreren in één enkele YAML-bestand. Het starten, stoppen en maken van koppelingen en volumes tussen containers wordt allemaal eenvoudiger met deze tool.
-
Wat doet Docker Compose?
Simpel gezegd maakt Docker Compose ingewikkelde taken eenvoudiger door conflicten en organisatorische problemen te elimineren. Hiermee kunnen gebruikers verschillende Docker-containers centraal beheren. Met andere woorden, in plaats van alle services in één grote container te hebben, splitst Docker Compose een service op in meerdere services, zodat gebruikers ze moeiteloos kunnen openen en beheren.
In deze gids leiden we u door de stappen voor het installeren van de huidige versie van Docker Compose voor het beheren van multi-containerapplicaties op CentOS 7. We zullen ook enkele basisopdrachten doornemen die u nodig hebt om de software succesvol te gebruiken.
-
Hoe u Docker Compose gebruikt
Het gebruik van Docker Compose is uiterst eenvoudig, zelfs voor nieuwkomers. Laten we eens kijken naar het proces in drie stappen van Docker Compose:
1. Bouwen: Bouw eerst images in de Dockerfile op basis van uw projectbehoeften, of haal ze eventueel op uit de registry.
2. Definiëren: Vervolgens moet u alle componentservices definiëren in het compose.yml-bestand.
3. Uitvoeren: Na het definiëren van de componenten is het tijd om ze uit te voeren met de docker-compose-opdracht.
Vereisten
Voordat we verder gaan met het installeren van Docker Compose op uw CentOS-server, moet u ervoor zorgen dat u beschikt over:
- Een non-root gebruiker met sudo-toegang op een CentOS 7-server.
- Docker geïnstalleerd op uw machine. Raadpleeg deze handleiding over hoe u Docker installeert en gebruikt op Ubuntu 18.04.
U bent nu helemaal klaar. Volg daarna de onderstaande stappen om Docker Compose op CentOS 7 te installeren.
Stap 1: Docker Compose installeren
Om de meest recente versie van Docker Compose te verkrijgen, volgt u de instructies in de Docker-documentatie en downloadt u de binaire bestanden van Docker’s GitHub-repository. Controleer of u de nieuwste versie van de software hebt door de onderstaande opdracht uit te voeren:
|
1 |
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose |
Om het binaire bestand uit te voeren, stelt u de onderstaande machtigingen in:
|
1 |
sudo chmod +x /usr/local/bin/docker-compose |
Zoek vervolgens uw versie op om te controleren of de installatie is geslaagd:
|
1 |
$docker-compose --version |
De onderstaande code zal de geïnstalleerde versie afdrukken:
U kunt vervolgens een “Hello World”-voorbeeld uitvoeren met behulp van de Docker Compose die u hebt geïnstalleerd.
Stap 2: Docker Compose gebruiken om een container uit te voeren
Er is een “Hello World”-image in Docker Hub, het openbare Docker-register, dat kan worden gebruikt voor demonstratie en testen. Het laat zien hoe u een container uitvoert met Docker Compose met een minimale configuratie. Eerst moet u een map maken voor ons YAML-bestand:
|
1 |
$mkdir hello-world |
Ga vervolgens naar deze map:
|
1 |
$cd hello-world |
Genereer vervolgens het YAML-bestand met de teksteditor van uw voorkeur. In deze handleiding gebruiken we Vi:
|
1 |
$vi docker-compose.yml |
Druk op i om in de invoegmodus te komen, en typ vervolgens dit in het bestand:
|
1 2 |
my-test: image: hello-world |
In de containernaam wordt de eerste regel opgenomen. De tweede regel geeft het programma instructies over welke image het moet gebruiken om de container te maken. docker-composeup zal zoeken naar een lokale image met de naam hello-world om te controleren of deze beschikbaar is wanneer u de opdracht typt. Om de invoegmodus te verlaten, drukt u op ESC. Voer vervolgens :x in en druk op ENTER om het bestand op te slaan en af te sluiten. De docker images opdracht kan worden gebruikt om handmatig te controleren op images op uw machine:
|
1 |
$ sudo docker images |
Alleen de kolomkoppen verschijnen als er helemaal geen lokale images zijn:
Om de container te maken, voert u deze opdracht uit terwijl u zich nog in de /hello-world-directory:
|
1 |
$sudo docker-compose up |
Wanneer u de opdracht voor de eerste keer uitvoert en er geen lokale image is met de naam hello-world, wordt deze gedownload uit de Docker Hub-repository:
Om te controleren of de installatie werkt, haalt Docker Compose de image op, bouwt een container, koppelt deze en voert het hello-programma uit:
Daarna wordt een afdruk weergegeven van een beschrijving van wat er is gedaan:
Wanneer hello zijn taak heeft voltooid, wordt de container afgesloten en wordt de opdracht niet langer in de container uitgevoerd. Kolomkoppen worden weergegeven bij het bekijken van actieve processen. De hello-world-container wordt echter niet vermeld omdat deze momenteel niet actief is:
|
1 |
$sudo docker ps |
Om alle containers te zien, en niet alleen de huidige, gebruikt u de -a-vlag:
|
1 |
$sudo docker ps -a |
Nu u hebt geprobeerd een container uit te voeren, kunt u doorgaan met het leren van enkele van de fundamentele Docker Compose-opdrachten.
Stap 3: Docker Compose-opdrachten
Om u op weg te helpen met Docker Compose, behandelt dit gedeelte de basisopdrachten die worden geleverd door de docker-compose-tool. docker-compose is een opdracht die per directory werkt. Door één directory voor elke container te genereren en één docker-compose.yml-bestand per directory, kunt u veel groepen Docker-containers op dezelfde computer uitvoeren.
Tot nu toe hebt u Docker Compose zelfstandig uitgevoerd. U kunt het uitschakelen door te drukken op Ctrl-C. Dit stelt het terminalvenster in staat om debug-berichten weer te geven. Het is echter raadzaam om docker-compose als een service uit te voeren wanneer u in productie werkt. De -d optie kan worden gebruikt als een eenvoudige manier om dit te bereiken:
|
1 |
docker-compose up -d |
Nu docker-compose splitst af naar de achtergrond. Uw groep Docker-containers (stilgelegd of actief) kan worden beheerd met de volgende opdracht:
|
1 |
$sudo docker-compose ps -a |
De Status van een container wordt gerapporteerd als Exited als deze is gestopt, zoals te zien is in het onderstaande voorbeeld:
Een container die momenteel actief is, geeft het volgende weer:
|
1 2 3 4 |
Name Command State Ports --------------------------------------------------------------- nginx_nginx_1 nginx -g daemon off; Up 443/tcp, 80/tcp |
U kunt alle actieve Docker-containers beëindigen in dezelfde map als het docker-compose.yml-bestand dat u hebt gebruikt om de Docker-groep te starten:
|
1 |
$docker-compose stop |
Note: Als u zaken geforceerd moet afsluiten, is docker-compose kill ook beschikbaar.
In sommige gevallen kunnen Docker-containers hun oude gegevens binnenin opslaan. Gebruik de rm opdracht om alle containers uit uw containergroep te verwijderen als u helemaal opnieuw wilt beginnen:
|
1 |
$docker-compose rm |
Het uitvoeren van een van deze opdrachten vanuit een andere map dan die waarin de Docker-container en het .yml-bestand zijn geplaatst, zal leiden tot een foutmelding:
|
1 2 3 4 5 6 |
ERROR: Can't find a suitable configuration file in this directory of any parent. Are you in the right directory? Supported filenames: docker-compose.yml, docker-compose.yaml |
In dit gedeelte hebben we de basisprincipes behandeld van het werken met containers met behulp van Docker Compose. Zoals besproken, kunt u in het volgende gedeelte toegang krijgen tot het Docker-bestandssysteem en opdrachten uitvoeren vanaf een opdrachtprompt in de container als u extra controle over uw containers nodig hebt.
Stap 4: Toegang tot het Docker-containerbestandssysteem
Het is mogelijk om een opdrachtprompt in een container uit te voeren en toegang te krijgen tot het bestandssysteem van de container met behulp van docker exec, wat een opdrachtregelprogramma is. Voer als voorbeeld “Hello World” uit en bekijk hoe lang het duurt voordat de docker exec-opdracht is voltooid. Voor deze handleiding kan de Docker Hub-image van Nginx worden gebruikt. Maak een nieuwe map aan met de naam nginx en ga er naartoe:
|
1 2 |
mkdir ~/nginx cd ~/nginx |
U zou nu een docker-compose.yml-bestand moeten hebben, dat u kunt openen in een teksteditor:
|
1 |
vi docker-compose.yml |
Voeg vervolgens het volgende toe aan het bestand:
|
1 2 |
nginx: image: nginx |
Het is tijd om de applicatie af te sluiten. Gebruik de volgende opdracht om de Nginx-container op de achtergrond te starten:
|
1 |
$sudo docker-compose up -d |
Docker Compose zal de Nginx-image downloaden en de container op de achtergrond uitvoeren. Om door te gaan, moet u de CONTAINER ID van de container invoeren. U kunt alle momenteel actieve containers bekijken met de volgende opdracht:
|
1 |
$sudo docker ps |
U ziet het volgende:
Als u het bestandssysteem in deze container wilt wijzigen met behulp van docker exec, gebruikt u de unieke ID van de container (in dit geval f139d0d78ca7) om een shell in de container te openen:
|
1 |
$sudo docker exec -it f139d0d78ca7 /bin/bash |
Een interactieve terminal kan bewerkt worden met de optie -t, terwijl /bin/bash de container voorziet van een bash-shell. Dit is de bash-prompt die u daarna voor de container zult zien:
|
1 |
root@b86b6699714c:/# |
Binnen uw container vindt u een opdrachtprompt. Het herstarten van de container zal alle wijzigingen die u heeft aangebracht overschrijven, tenzij u werkt in een map die is opgeslagen als onderdeel van een datavolume. Als u gewend bent te werken met Linux-opdrachtregelvoorzieningen, moet u weten dat de meeste Docker-images worden geproduceerd met de meest elementaire Linux-installaties.
Conclusie
We hebben u door de stappen geleid voor het installeren van de huidige versie van Docker Compose voor het beheren van multi-containerapplicaties op CentOS 7. Het vermogen van Docker Compose om gelijktijdig een groot aantal containers op te starten en af te sluiten is indrukwekkend. Het overstappen van sjablonen naar applicaties duurt slechts enkele minuten. Dus als uw werk het tegelijkertijd uitvoeren van meerdere containers omvat, is het blijven gebruiken van Docker Compose een uitstekende optie. Toch is het geen universele oplossing. U kunt ook betere opties vinden, afhankelijk van uw specifieke behoeften, bijvoorbeeld Kubernetes.
Om de kracht van Docker Compose verder te verkennen, kunt u deze handleidingen raadplegen van onze blog:
- Laravel, Nginx en MySQL deployen met Docker Compose
- Hoe Docker Compose te installeren en configureren op Ubuntu 20.04
Veel computerplezier!






Reacties
Nog geen reacties. Wees de eerste.