Lær Docker, del 6: arbeid med data.

I dagens del av oversettelsen av serien om Docker skal vi snakke om håndtering av data. Spesielt om Docker-volumer. I disse materialene har vi kontinuerlig sammenlignet programvaremekanismene i Docker med forskjellige spiselige analogier. La oss ikke avvike fra denne tradisjonen her. Data i Docker kan tenkes på som krydder. Det finnes mange typer krydder i verden, og i Docker er det mange måter å håndtere data på.

→ Del 1: Grunnleggende
→ Del 2: Termer og konsepter
→ Del 3: Dockerfile-filer
→ Del 4: Redusere bildestørrelser og akselerere bygging
→ Del 5: Kommandoer
→ Del 6: Håndtering av data

Lær Docker, del 6: arbeid med data.

Vær oppmerksom på at dette materialet er forberedt med Docker-motoren versjon 18.09.1 og API-versjon 1.39.

Data i Docker kan lagres enten midlertidig eller permanent. La oss begynne med midlertidige data.

Midlertidig lagring av data

I Docker-containere kan håndtering av midlertidige data organiseres på to måter.

Som standard lagres filene som opprettes av en applikasjon som kjører i en container i det skrivbare laget av containeren. For at denne mekanismen skal fungere, må det ikke settes opp noe spesielt. Det blir både rimelig og effektivt. Applikasjonen trenger bare å lagre dataene og fortsette med sitt arbeid. Men etter at containeren har opphørt å eksistere, vil også dataene lagret på denne enkle måten forsvinne.

For lagring av midlertidige filer i Docker kan man bruke en annen løsning, passende for tilfeller der det kreves høyere ytelse sammenlignet med det som kan oppnås med standard mekanisme for midlertidig datalagring. Hvis du ikke trenger at dataene dine lagres lenger enn containerens eksistens, kan du koble til tmpfs til containeren — et midlertidig datalager som bruker vertens RAM. Dette vil akselerere skrive- og leseoperasjoner.

Det skjer ofte at data må lagres selv etter at containeren har opphørt å eksistere. For dette trenger vi mekanismer for permanent datalagring.

Permanent datalagring

Det finnes to måter å forlenge levetiden til dataene på, utover containerens levetid. En av metodene innebærer bruk av bind mount-teknologi. Med denne tilnærmingen kan en ekte eksisterende mappe bli montert til containeren. Prosesser utenfor Docker vil kunne arbeide med dataene som er lagret i denne mappen. Slik ser det ut å montere tmpfs og bind mount-teknologi.

Lær Docker, del 6: arbeid med data.
Montering av tmpfs og bind mount

Ulempene med å bruke bind mount-teknologi er at det kompliserer sikkerhetskopiering av data, migrering av data og felles bruk av data mellom flere containere. Det er mye bedre å bruke Docker-volumer for permanent lagring av data.

Docker-volumer

Et volum er et filsystem som ligger på vertsmaskinen utenfor containerne. Oppretting og administrasjon av volumer håndteres av Docker. Her er de viktigste egenskapene til Docker-volumer:

  • De representerer midler for permanent lagring av informasjon.
  • De er selvstendige og adskilt fra containerne.
  • De kan deles mellom forskjellige containere.
  • De gjør det mulig å organisere effektiv lesing og skriving av data.
  • Volumer kan plasseres på ressurser fra en ekstern skyleverandør.
  • De kan krypteres.
  • De kan få navn.
  • Containeren kan organisere forhånds-fylling av volumet med data.
  • De er praktiske for testing.

Som du ser, har Docker-volumer fantastiske egenskaper. La oss snakke om hvordan man kan opprette dem.

Oppretting av volumer

Volumer kan opprettes ved hjelp av Docker eller gjennom API-forespørsel.

Her er instruksjonen i Dockerfile som lar deg opprette et volum når containeren startes.

VOLUME /my_volume

Ved å bruke en slik instruksjon i Docker, vil det etter opprettelsen av containeren bli opprettet et volum som inneholder dataene som allerede finnes på det spesifiserte stedet. Legg merke til at hvis du oppretter et volum ved hjelp av Dockerfile, fritar det deg ikke fra å spesifisere monteringspunktet for volumet.

Det er også mulig å opprette volumer i Dockerfile ved å bruke JSON-format.

I tillegg kan volumer opprettes ved hjelp av kommandolinjeverktøy under kjøring av containeren.

Arbeide med volumer fra kommandolinjen

▍Oppretting av volum

Et selvstendig volum kan opprettes med følgende kommando:

docker volume create --name my_volume

▍Finne informasjon om volumer

For å se listen over Docker-volumer, bruk følgende kommando:

docker volume ls

Du kan undersøke et spesifikt volum slik:

docker volume inspect my_volume

▍Fjerning av volum

Du kan fjerne et volum slik:

docker volume rm my_volume

For å fjerne alle volumer som ikke brukes av containere, kan du bruke følgende kommando:

docker volume prune

Før fjerning av Docker-volumer vil du bli bedt om å bekrefte utføringen av denne operasjonen.

Hvis volumet er knyttet til en hvilken som helst container, kan ikke dette volumet fjernes før den tilhørende containeren er fjernet. Selv om containeren er slettet, forstår ikke alltid Docker dette. Hvis dette skjer, kan du bruke følgende kommando:

docker system prune

Den er ment for å rydde opp i Docker-ressurser. Etter at du har kjørt denne kommandoen, skal du ha muligheten til å slette volumer hvis status tidligere var feil.

Flaggene —mount og —volume

For å arbeide med volumer, må du ofte bruke flaggene ved kjøring av kommandoen. docker, for eksempel, for å opprette et volum under opprettelse av en container, kan du bruke følgende konstruksjon:

docker container run --mount source=my_volume, target=\/container\/path\/for\/volume my_image

I gamle dager (før 2017) var flagget --volume. Opprinnelig ble dette flagget (du kan fortsatt bruke det i forkortet form, da ser det ut som -v) brukt for selvstendige containere, mens flagget --mount — ble brukt i Docker Swarm-miljøet. Men siden Docker 17.06 kan flagget --mount brukes i alle scenarier.

Det er viktig å merke seg at bruken av flagget --mount øker volumet av ekstra data som må spesifiseres i kommandoen, men av flere grunner er det bedre å bruke dette flagget og ikke --volume. Flagget --mount er den eneste mekanismen som gjør det mulig å arbeide med tjenester eller angi parametere for volumdriveren. I tillegg er det enklere å jobbe med dette flagget.

I eksisterende eksempler på kommandoer som er rettet mot databehandling i Docker, kan du se mange eksempler på bruken av flagget -v. Når du prøver å tilpasse disse kommandoene til deg selv, må du ta hensyn til at flaggene --mount og --volume bruker forskjellige formater for parametere. Det vil si at du ikke bare kan bytte ut -v En funksjon har blitt --mount og få en arbeidende kommando.

Hovedforskjellen mellom --mount og --volume er at når flagget --volume brukes, samles alle parametrene sammen i ett felt, mens når det brukes. --mount parametere er adskilt.

Når du arbeider med --mount parametere presenteres som par med nøkkel-verdi, som ser slik ut key=value. Disse parene skilles med komma. Her er ofte brukte parametere --mount:

  • type — monteringstype. Verdien for nøkkelen kan være bind, volumen eller tmpfs. Vi snakker her om volumer, altså – vi er interessert i verdien volumen.
  • kilde — monteringskilde. For navngitte volumer er dette navnet på volumet. For unavngitte volumer oppgis ikke denne nøkkelen. Den kan forkortes til src.
  • destination — stien hvor filen eller mappen monteres i containeren. Denne nøkkelen kan forkortes til dst eller mål.
  • readonly — monterer volumet som er ment bare for lesing. Det er valgfritt å bruke denne nøkkelen, og den tildeles ikke en verdi.

Her er et eksempel på bruk --mount med mange parametere:

docker run --mount type=volume,source=volume_name,destination=\/path\/in\/container,readonly my_image

Resultater

Her er nyttige kommandoer som kan brukes når man arbeider med Docker-volumer:

  • docker volume create
  • docker volume ls
  • docker volume inspect
  • docker volume rm
  • docker volume prune

Her er en liste over ofte brukte parametere for --mount, anvendelig i en kommando som ser slik ut docker run --mount my_options my_image:

  • type=volume
  • source=volume_name
  • destination=\/path\/in\/container
  • readonly

Nå som vi har fullført denne serien med materialer om Docker, er det på tide å si et par ord om hvor de som studerer Docker kan gå videre. Her er en god artikkel om Docker. Her er en bok om Docker (når du kjøper denne boken, prøv å få tak i den nyeste utgaven). Her er en annen bok som vil passe for de som mener at praksis er den beste måten å lære teknologier på.

Kjære lesere! Hvilke materialer om Docker ville du anbefale nybegynnere å studere?

Lær Docker, del 6: arbeid med data.

Kilde: habr.com

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster