Terug naar blog

Werken met Docker Data Volumes op Ubuntu 20.04

Werken met Docker Data Volumes op Ubuntu 20.04

Introductie

Docker Data Volumes is een belangrijk concept bij het containeriseren van uw applicaties. Het kennen van dit concept is essentieel voor het garanderen van de beste ervaring met uw gecontaineriseerde applicatie, samen met betrouwbare persistentie en gegevensbeheer. Hoewel dit concept belangrijk is, is het voor veel ontwikkelaars ook verwarrend en complex. Het is belangrijk voor ontwikkelaars en DevOps-specialisten om te begrijpen hoe ze Docker Data Volumes moeten opzetten, het juiste gebruik ervan te begrijpen, de verschillende soorten volumes te kennen en te weten welk type ze moeten selecteren voor hun applicatie.

Deze handleiding is gericht op het uitleggen van het concept en het gebruik van Docker Data Volumes. Nadat u deze handleiding hebt voltooid, zult u het opzetten van en werken met elk type Docker Data Volume onder de knie hebben.

Vereisten

Om deze handleiding te kunnen volgen, heeft u de onderstaande items nodig:

  1. Ubuntu geïnstalleerd. Bekijk onze Hoe u uw Ubuntu 18.04-server instelt handleiding voor een snelle referentie.
  2. Ubuntu-gebruiker met sudo-privileges. Deze stap kan ingewikkeld zijn, vooral als u niet bekend bent met Linux. Lees Het Linux Sudoers-bestand configureren voor een gedetailleerde handleiding.
  3. Docker geïnstalleerd op Ubuntu. Om Docker op uw Ubuntu te installeren, kunt u onze Hoe u Docker installeert & beheert op Ubuntu in the public cloud blog volgen.

Hoewel deze handleiding zich richt op het beheren van Docker op Ubuntu, docker -commando's zijn van toepassing op alle besturingssystemen waarop Docker is geïnstalleerd.

Begrijpen hoe Docker-containers werken

Om Docker Data Volumes volledig te begrijpen, moet u weten hoe Docker-containers werken. In dit gedeelte bieden we een overzicht van de basisprincipes voor nieuwe gebruikers van Docker. Als u weet hoe Docker werkt of een ervaren gebruiker van Docker bent, kunt u dit gedeelte overslaan en aan de slag gaan met datavolumes.

Docker-containers maken het mogelijk om een applicatie uit te voeren bovenop het host-besturingssysteem door het Docker-platform te installeren. Omdat het Docker-platform op het host-besturingssysteem is geïnstalleerd, ontstaat er een abstractie tussen de hostmachine en de gastapplicatie. In tegenstelling tot een virtuele machine deelt een Docker-container zijn Linux-kernel met het host-besturingssysteem. Omdat Docker geen extra besturingssysteem nodig heeft om bovenop de hostmachine te worden geïnstalleerd, zijn Docker-applicaties licht van gewicht en toegankelijk op alle hostmachines, zolang Docker op die hostmachine is geïnstalleerd.

Omdat er geen extra gast-OS is, deelt het Docker-platform bronnen met de hostmachine. Het opstarten van de Docker-applicatie gaat snel, maar de complexiteit ontstaat wanneer u de bronnen moet delen. Docker heeft geen eigen geheugen of opslag voor datapersistentie. Deze bronnen moeten van de hostmachine komen. Mensen die gewend zijn om virtuele machines te gebruiken, vinden dit proces van het delen en beheren van bronnen vaak moeilijk. Het ontbreken van de juiste kennis kan leiden tot onverwachte en ongewenste resultaten. Hoewel deze handleiding ervan uitgaat dat u bekend bent met het Docker-ecosysteem, kunt u gerust onze gedetailleerde handleiding doorlezen Wat is Docker? Een overzicht van het Docker-ecosysteem voor een snelle opfriscursus.

Gegevens persistent maken met Docker Data Volumes

Wanneer u met Docker werkt, kunt u er niet rechtstreeks een volume in maken. Om gegevens op te slaan, moeten we daarom een Docker-volumecontainer maken waaraan een volume is gekoppeld. Om onze Docker-applicatie te verbinden met deze datavolumecontainer, gebruiken we Docker’s --volume-from -commando om de container op te halen en aan onze applicatie te koppelen.

We zullen het proces stap voor stap doorlopen:

  1. Maak eerst een nieuwe container aan met de naam, my-container door het onderstaande commando uit te voeren:
    Docker Data Volumes 1 docker create my-container
    Hierdoor wordt een nieuwe container gemaakt in de /tmp -map. U kunt de maplocatie naar wens wijzigen.
  2. Nu uw datacontainer klaar is, kunt u er naar schrijven door een nieuwe Ubuntu-container uit te voeren met de --volume-from flag en vervolgens de bash uit te voeren. Alles wat we schrijven naar de tmp directory zal worden opgeslagen in de /tmp map van onze hostmachine:
    Docker Data Volumes 2 Run docker container
    De -t opdrachtregeloptie roept een terminal aan van binnenuit de container. De -i vlag maakt de verbinding interactief. Maak bij de bash-prompt voor de Ubuntu-container een bestand aan in /tmp:
  3. Sluit ten slotte deze bash af door het uitvoeren van de exit opdracht. Voer vervolgens de onderstaande opdracht uit:
    Docker Data Volumes 3 New container sample file
    Je vindt je sample_file in deze directory. Er is geen beperking op het aantal op te geven volumes. Je kunt zoveel volumes toevoegen als je wilt met behulp van de --volumes-from vlag. Je kunt ook zoveel datavolume-containers maken als je wilt.

Toegang tot gegevens tussen de host en de Docker-container

Voor lezers met ervaring in virtualisatie is deze optie vergelijkbaar met de optie voor gedeelde mappen in virtuele machines. In plaats van het maken van een data-only container, voeren we onze Docker-applicatie uit met behulp van een Docker-image en overschrijven we een van de mappen met de inhoud van een map op het hostsysteem.

Een veelvoorkomend scenario is het opslaan van de logbestanden op de hostmachine. Dit kan nodig zijn zodat we deze bestanden naar behoefte kunnen analyseren zonder in de machine te hoeven gaan. Veronderstel voor dit scenario dat je de Docker Nginx-image gebruikt en de logbestanden op de hostmachine wilt opslaan. De Nginx Docker-image schrijft de logs naar de /var/log/nginx directory, maar dit is /var/log/nginx binnenin de Docker Nginx-container. Hierdoor is deze locatie niet toegankelijk voor de hostmachine.

Om ons doel te bereiken, moeten we een gedeelde map maken om de logs op te slaan tussen de hostmachine en de Docker Nginx-image. Hieronder illustreren we dit proces in een eenvoudige stapsgewijze handleiding:

  1. Maak eerst een directory aan op je hostmachine waar je de logs wilt opslaan:
    Start vervolgens je container door de onderstaande opdracht uit te voeren:
    Docker run nginx container
  2. Deze run opdracht accepteert een paar argumenten, dus laten we deze opsplitsen om het beter te begrijpen:
    • -p 5000:80: Stel een poortdoorsturing in. De Nginx-container luistert standaard op poort 80 , en dit koppelt poort van de Nginx-container80 aan poort 5000 op het hostsysteem.
    • -d: Koppel het proces los en voer het uit op de achtergrond.
    • -v ~/my-nginxlogs:/var/log/nginx: We koppelen de /var/log/nginx directory van binnenuit de Nginx-container aan de /my-nginxlogs directory op de hostmachine. Deze : scheidt het pad van de host van het pad van de container. Het hostpad komt altijd eerst.

Nu onze Nginx-container draait, controleer je eerst of de Nginx-server actief is op de 5000 poort van onze hostmachine door je webbrowser te openen en naar de URL te gaan: http://localhost:5000. Zodra de welkomstpagina verschijnt, is je Nginx-server gereed en maakt deze logs aan in zijn /var/log/nginx map.

Als je de /my-nginxlogs map van je hostmachine opent, zie je hier de logbestanden van de Docker Nginx-container. Als je wijzigingen aanbrengt in de /my-nginxlogs map op de hostmachine terwijl de Nginx-container draait, worden de wijzigingen ook weerspiegeld in de /var/log/nginx map van de container.

Conclusie

In deze handleiding hebben we een uitgebreide aanpak gekozen om Docker Data Volumes te begrijpen. We hebben gekeken naar het maken van volumes voor je applicatie, het delen van gegevens tussen host en Docker-container, soorten gegevens en het persistent maken van gegevens. Dit helpt je bij het persistent maken van gegevens in je gecontaineriseerde applicaties en bij het beheren van de status en configuratie van de applicatie.

Voor meer informatie over Docker kun je de volgende handleidingen bekijken op onze blog:

Veel computerplezier!

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.