Inleiding
Docker is een platform dat het uitvoeren en beheren van applicatieprocessen in containers eenvoudiger maakt. Het biedt een manier om uw applicaties te scheiden van uw infrastructuur. Containers lijken erg op virtuele machines, maar ze zijn draagbaarder, efficiënter en gebruiksvriendelijker. Er zijn verschillende manieren om Docker te installeren op Linux distributies. De meest populaire en eenvoudige manier om Docker op het bestaande besturingssysteem te installeren is door gebruik te maken van yum-commando's.
Deze handleiding laat zien hoe u Docker kunt instellen en gebruiken op CentOS 7 in een paar eenvoudige stappen.
Vereisten:
- 64-bit CentOS 7-instantie.
- Een niet-rootgebruiker met sudo-privileges.
Alle commando's die u in deze handleiding uitvoert, worden uitgevoerd als een niet-rootgebruiker en indien nodig wordt root-toegang verleend met behulp van het sudo-sleutelwoord.
Stap 1: Docker instellen op een CentOS 7-instantie
De officiële CentOS 7-repository bevat mogelijk niet het nieuwste installatiepakket voor Docker. In dit gedeelte installeert u de nieuwste versie van Docker vanuit de officiële Docker-repository. Eerst moet u de pakketdatabase bijwerken met:
|
1 |
sudo yum check-update |
Nadat de updatestap is voltooid, voert u het onderstaande commando uit om de nieuwste versie van Docker te downloaden en te installeren:
|
1 |
curl -fsSL https://get.docker.com/ | sh |
Docker is nu geïnstalleerd, dus u kunt de Docker-daemon starten door het onderstaande commando uit te voeren:
|
1 |
sudo systemctl start docker |
Om te controleren of de Docker-daemon actief is, typt u het volgende:
|
1 |
sudo systemctl status docker |
De uitvoer van het commando systemctl status zou vergelijkbaar moeten zijn met de hieronder gedeelde uitvoer, die laat zien dat het actief is:
|
1 2 3 4 5 6 |
Output: ● docker.service - Docker Applicatie Container Engine Loaded: geladen (/usr/lib/systemd/system/docker.service; uitgeschakeld; leverancier standaardinstelling: uitgeschakeld) Active: actief (draaiend) sinds wo 2021-02-17 18:22:06 UTC; 10s geleden Docs: https://docs.docker.com Main PID: 21884 (dockerd) |
Om er ten slotte voor te zorgen dat Docker opstart wanneer u uw machine opnieuw opstart, gebruikt u het commando:
|
1 |
sudo systemctl enable docker |
De Docker-installatie biedt u zowel de Docker-service als het clienthulpprogramma (Docker command-line client). In de volgende secties van de handleiding kunt u meer praktijkervaring opdoen met de Docker-commando's.
U kunt ook een kijkje nemen bij onze diepgaande handleiding over het installeren & beheren van Docker op Ubuntu in the public cloud.
Stap 2: Docker-commando's gebruiken zonder Sudo-voorvoegsel
Docker-commando's hebben root-privileges nodig om te worden uitgevoerd. Dus als u de commando's wilt uitvoeren, moet u er sudo voor zetten. Tijdens de installatie wordt er standaard een Docker-groep aangemaakt. Als u een gebruiker aan de groep toevoegt, kunt u de Docker-commando's zonder sudo uitvoeren. Als u probeert Docker-commando's uit te voeren zonder sudo of zonder de gebruiker aan de groep toe te voegen, leidt dit tot een uitvoer die vergelijkbaar is met de onderstaande:
|
1 2 3 |
Output: docker: Kan niet verbinden met de Docker daemon. Draait de docker daemon actief op deze host?. Zie 'docker run --help'. |
Als u uw gebruikersnaam toevoegt aan de Docker-groep, hoeft u geen sudo te gebruiken om de Docker-commando's uit te voeren:
|
1 |
sudo usermod -aG docker $(whoami) |
Om een andere gebruiker aan de Docker-groep toe te voegen, kunt u eenvoudig de gebruikersnaam in het commando vervangen:
|
1 |
sudo usermod -aG docker gebruikersnaam |
Voor de rest van deze handleiding gaan we ervan uit dat alle commando's worden uitgevoerd door een gebruiker in de Docker-gebruikersgroep. Als dit niet het geval is, kunt u het sudo-voorvoegsel bij de commando's gebruiken.
Stap 3: De Docker-opdrachten uitvoeren
Nu je Docker hebt geïnstalleerd en het actief is, laten we eens kijken naar enkele opdrachten om vertrouwd te raken met het Docker-opdrachtregelprogramma. Docker-opdrachten hebben meestal de volgende vorm:
|
1 |
docker [optie] [opdracht] [argumenten] |
Om alle beschikbare subopdrachten te vinden, gebruik je:
|
1 |
docker |
Vanaf Docker 20.10.3, bevat de volledige lijst met beschikbare subopdrachten:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
Uitvoer: attach Koppel lokale standaard invoer, uitvoer, en fout stromen aan een actieve container build Bouw een image van een Dockerfile commit Maak een nieuwe image van een containers wijzigingen cp Kopieer bestanden/mappen tussen een container en het lokale bestandssysteem create Maak een nieuwe container diff Inspecteer wijzigingen in bestanden of mappen op een containers bestandssysteem events Ontvang realtime time gebeurtenissen van de server exec Voer een opdracht uit in een actieve container export Exporteer het container's bestandssysteem als een tar-archief history Toon de geschiedenis van een image images Toon een lijst met images import Importeer de inhoud van een tarball om een bestandssysteem- image te maken info Toon systeembrede-wide informatie inspect Geef low--level informatie over Docker-objecten kill Beëindig een of meer actieve containers load Laad een image uit een tar-archief of STDIN login Log in bij een Docker-register logout Log uit bij een Docker-register logs Haal de logs van een container pause Pauzeer alle processen binnen een of meer containers port Toon een lijst van poortkoppelingen of een specifieke koppeling voor de container ps Toon een lijst van containers pull Haal een image of een repository van een registry push Push een image of een repository naar een registry rename Hernoem een container restart Herstart één of meer containers rm Verwijder één of meer containers rmi Verwijder één of meer images run Voer een commando uit in een nieuwe container save Sla één of meer images op in een tar-archief (gestreamd naar STDOUT als standaard) search Zoek op de Docker Hub naar images start Start één of meer gestopte containers stats Toon een live stream van container(s) resource-gebruiksstatistieken stop Stop één of meer draaiende containers tag Maak een tag TARGET_IMAGE die verwijst naar SOURCE_IMAGE top Toon de draaiende processen van een container unpause Hervat alle processen binnen één of meer containers update Werk de configuratie bij van één of meer containers version Toon de Docker-versie-informatie wait Blokkeer totdat één of meer containers stoppen, en print hun exit-codes |
Je kunt de flag –help gebruiken bij een specifiek commando om er meer informatie over te krijgen:
|
1 |
docker subcommand --help |
Gebruik het volgende commando voor gedetailleerde informatie over het systeem:
|
1 |
docker info |
Stap 4: Werken met Docker Images
Docker-images kunnen worden gezien als de blauwdruk voor Docker-containers. Deze images worden meestal binnengehaald (gepulld) van de Docker Hub, een registry die wordt beheerd door het Docker-project. Iedereen kan eigen images maken en pushen naar de Docker Hub. Hierdoor kun je eenvoudig een grote verscheidenheid aan applicaties en OS-distributies in de registry vinden. Laten we een eenvoudig programma uitproberen om de toegang tot de Docker Hub te bevestigen:
|
1 |
docker run hello-world |
Je zou een uitvoer zoals hieronder moeten krijgen, wat aantoont dat Docker werkt:
|
1 2 3 4 |
Output: Hallo van Docker! Dit bericht toont aan dat je installatie correct lijkt te werkencorrectly. ... |
Je kunt verschillende Docker-images vinden op de Docker Hub met behulp van het commando search. Zie bijvoorbeeld het onderstaande commando om te zoeken naar een CentOS-image:
|
1 |
docker search centos |
De zoekopdracht toont een lijst met alle images die overeenkomen met de zoekterm. In jouw geval zou de uitvoer er als volgt uit moeten zien:
|
1 2 3 4 5 6 7 8 |
Output: NAAM BESCHRIJVING STERREN OFFICIEEL GEAUTOMATISEERD centos De officiële build van CentOS. 6410 [OK] ansible/centos7-ansible Ansible op Centos7 132 [OK] consol/centos-xfce-vnc Centos container met "headless" VNC sess… 125 [OK] jdeathe/centos-ssh OpenSSH / Supervisor / EPEL/IUS/SCL Repos… 117 [OK] centos/systemd systemd ingeschakeld basis container. 96 [OK] ... |
In de zoekresultaten staan verschillende kolommen die informatie over de image beschrijven. De OK in de kolom OFFICIAL bepaalt dat de image is gemaakt en wordt ondersteund door het bedrijf achter de applicatie. Zodra u de image heeft definitief gemaakt, kunt u deze naar uw lokale machine downloaden met behulp van het Docker pull-commando:
|
1 |
docker pull centos |
Na het downloaden van de image kunt u de container uitvoeren met het Docker run-commando. Als u direct probeert een image uit te voeren zonder deze eerst te downloaden, zal Docker de image downloaden en daarna de container uitvoeren:
|
1 |
docker run centos |
U kunt de images die naar uw lokale machine zijn gedownload weergeven met het onderstaande commando:
|
1 |
docker images |
U zou een vergelijkbare uitvoer moeten krijgen:
|
1 2 3 4 |
Output: REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 300e315adb2f 2 maanden geleden 209MB hello-world latest bf756fb1ae65 13 maanden geleden 13.3kB |
Verderop in deze handleiding kunt u de images aanpassen om de containers uit te voeren. Deze nieuwe images kunnen worden toegevoegd of gepusht naar Docker Hub en andere registers die Docker-images hosten.
Stap 5: Een container interactief uitvoeren
Er zijn verschillende soorten containers. De hello-world-container die u heeft uitgevoerd in Stap 4 is een type container dat wordt uitgevoerd en stopt na het afdrukken van een bericht. Een ander type container is de interactieve container. U kunt interactieve containers op een vergelijkbare manier gebruiken als een virtuele machine.
Laten we een container maken van de nieuwste CentOS-image. Het gebruik van de vlaggen -i en -t in het Docker run-commando geeft interactieve toegang tot de CentOS-container:
|
1 |
docker run -it centos |
De opdrachtprompt zal veranderen en zou eruit moeten zien als de onderstaande uitvoer:
|
1 2 |
Output: [root@3ce69d2a35b9 /]# |
|
1 |
Opmerking: De container-id die wordt weergegeven in de opdrachtprompt is uniek en het zal achteraf van pas komen, , in het voorbeeld is het 3ce69d2a35b9. |
Nu zal elk commando dat u uitvoert binnen de container worden uitgevoerd. Dat is vergelijkbaar met het uitvoeren van een commando in een virtuele machine. Laten we proberen MySQL server te installeren in de CentOS-container. U kunt dit doen met:
|
1 |
yum install mysql |
Stap 6: Wijzigingen in een container vastleggen in een Docker-image
Na het starten van de container kunt u alle bewerkingen uitvoeren die mogelijk zijn in een vergelijkbare virtuele machine, zoals het maken/wijzigen van bestanden of het instellen van een app. Houd er rekening mee dat deze wijzigingen alleen voor die container behouden blijven, en nadat u de container verwijdert, gaan de gemaakte wijzigingen verloren.
In dit deel van de handleiding leert u hoe u een nieuwe Docker-image maakt van een container met de wijzigingen die u hebt aangebracht. Na Stap 5 heeft u een CentOS-container draaien waarop de MySQL-server is geïnstalleerd. Deze container is nu anders dan de standaard CentOS-image. U kunt deze status van de container opslaan voor toekomstig gebruik. Eerst moet u de container afsluiten met:
|
1 |
exit |
Leg de wijzigingen die u in de container hebt aangebracht vast in een nieuwe Docker-image met de onderstaande opdracht:
|
1 |
docker commit -m "Wijzigingen aangebracht in de image" -a "Naam auteur" container-id repository/new_image_name |
In de opdracht verwijst -m naar het commit-bericht en moet in feite de aangebrachte wijzigingen aanduiden, de tag -a wordt gebruikt om de auteur te vermelden. Container-id is die van Stap 5, die u hebt gekregen na het uitvoeren van de container in de interactieve modus, en meestal is de repository uw gebruikersnaam voor Docker Hub. Bijvoorbeeld:
|
1 |
docker commit -m "mysql-server toegevoegd" -a "CloudSigma" 59839a1b7de2 finid/centos-mariadb |
|
1 |
Opmerking: Nadat de nieuwe image is vastgelegd is deze opgeslagen op uw systeem. In de volgende fasen van deze handleiding , leert u hoe u een image naar Docker Hub en in vergelijkbare registers die docker-images hosten kunt pushendocker images. Zodra uw image is gepusht naar het register, , kan deze ook door anderen worden benaderd well. |
Nu de image is vastgelegd, zou de opdracht Docker-images zowel de nieuwe image als de oude moeten weergeven:
|
1 |
docker images |
De uitvoer van de opdracht zou vergelijkbaar moeten zijn met de onderstaande:
|
1 2 3 4 5 |
Output: REPOSITORY TAG IMAGE ID CREATED SIZE cloudsigma23/centos-mysql latest 1b9368efea70 13 seconden geleden 308MB centos latest 300e315adb2f 2 maanden geleden 209MB hello-world latest bf756fb1ae65 13 maanden geleden 13.3kB |
Zoals in het voorbeeld te zien is, is er een nieuwe image centos-mysql gemaakt met behulp van de CentOS-image van de Docker Hub. Het verschil in grootte geeft aan dat er enkele wijzigingen zijn aangebracht. In dit voorbeeld was dat de toevoeging van de MySQL-server in de container. De volgende keer dat u een container met een MySQL-server nodig heeft, kunt u gewoon de nieuwe image uitvoeren, en voilà! U heeft een CentOS-container met een vooraf geïnstalleerde en actieve MySQL-server.
Stap 7: Docker-containers beheren
Nu u bekend bent met Docker, heeft u na verloop van tijd waarschijnlijk al een aantal actieve en inactieve containers. Om de lijst met actieve containers te krijgen, gebruikt u:
|
1 |
docker ps |
U zou een vergelijkbare uitvoer moeten zien:
|
1 2 3 |
Output: CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 604c889cf404 centos "/bin/bash" 20 minuten geleden Up 20 minuten intelligent_easley |
Om zowel de actieve als inactieve containers op te sommen, moet u de -a-vlag gebruiken met het commando:
|
1 |
docker ps -a |
Om de laatste container te vinden die u hebt gemaakt, kunt u de -l-vlag opgeven:
|
1 |
docker ps -l |
Om een actieve/lopende container te stoppen, voert u een eenvoudig commando uit:
|
1 |
docker stop container-id |
U kunt de container-id vinden in de uitvoer van het Docker ps-commando.
Stap 8: De images publiceren naar een repository
De volgende stap na het maken van de nieuwe image is om deze te delen met uw vrienden. U kunt deze ook beschikbaar maken voor de hele wereld met behulp van Docker Hub of een andere registry. U moet inloggen op de respectieve registry voordat u de image pusht.
In het volgende deel van de handleiding leert u hoe u de images naar Docker Hub pusht. Meld u eerst aan op Docker Hub. U moet inloggen op Docker Hub om uw image te pushen met het onderstaande commando:
|
1 |
docker login -u docker-registry-username |
Zodra u het juiste wachtwoord invoert en de authenticatie succesvol is, kunt u uw image pushen. Gebruik het onderstaande commando om de image te pushen:
|
1 |
docker push docker-registry-username/docker-image-name |
De uitvoer van het commando zal vergelijkbaar zijn met dit:
|
1 2 3 4 5 |
Output: De push verwijst naar repository [docker.io/cloudsigma23/centos-mysql] ee30e80cbcc5: Gepusht 2653d992f4ef: Gemonteerd vanuit library/centos ... |
Zodra u de image hebt gepusht, zou deze moeten verschijnen op het dashboard van uw account, zoals te zien is in de onderstaande afbeelding:

In het geval van een mislukking op een vergelijkbare manier, is de kans groot dat u niet bent ingelogd:
|
1 2 3 4 5 6 7 |
Output: De push verwijst naar repository [docker.io/cloudsigma23/centos-mysql] ee30e80cbcc5: Laag al bestaat 2653d992f4ef: Laag al bestaat fouten: geweigerd: gevraagde toegang tot de bron is geweigerd niet geautoriseerd: authenticatie vereist |
U kunt inloggen en de pushpoging herhalen.
Conclusie
Er zijn verschillende manieren waarop u gebruik kunt maken van Docker. Deze handleiding zou u voldoende informatie moeten bieden om aan de slag te gaan. En aangezien Docker een erg populair project is, kunt u veel details over het gebruik en verschillende use cases vinden op de blogpagina van het project.
U kunt ook onze andere Docker-handleidingen bekijken om meer te leren over wat u met Docker kunt doen:
- Docker-bronnen opschonen – Images, containers en volumes
- Laravel, Nginx en MySQL implementeren met Docker Compose
- Draai uw eigen VPN-server onder Docker met OpenVPN Access Server
Veel computerplezier!
Reacties
Nog geen reacties. Wees de eerste.