LĂ€r dig Docker, del 6: arbete med data

I den hÀr delen av översÀttningen av serien om Docker kommer vi att prata om datahantering. Specifikt om Docker-volymer. I dessa material har vi stÀndigt jÀmfört programvarumechanismerna i Docker med olika Àtliga analogier. Vi ska inte avvika frÄn denna tradition hÀr heller. LÄt oss betrakta data i Docker som kryddor. Det finns en mÀngd olika kryddor i vÀrlden, precis som det finns mÄnga sÀtt att hantera data i Docker.

→ Del 1: GrundlĂ€ggande
→ Del 2: Termer och koncept
→ Del 3: Dockerfile-filer
→ Del 4: Minska bildstorlekar och snabba upp byggen
→ Del 5: Kommandon
→ Del 6: Arbeta med data

LĂ€r dig Docker, del 6: arbete med data

Observera att detta material har förberetts med hjÀlp av Docker-motorn version 18.09.1 och API-version 1.39.

Data i Docker kan lagras antingen tillfÀlligt eller permanent. LÄt oss börja med tillfÀlliga data.

TillfÀllig lagring av data

I Docker-containrar kan man organisera arbetet med tillfÀlliga data pÄ tvÄ sÀtt.

Som standard sparas filer som skapats av applikationen som körs i containern i containerns skrivbara lager. För att denna mekanism ska fungera krÀvs ingen specifik konfiguration. Det blir bÄde enkelt och billigt. Applikationen behöver bara spara data och fortsÀtta med sina uppgifter. Men efter att containern har upphört att existera försvinner ocksÄ data som lagrats pÄ detta enkelt sÀtt.

För lagring av tillfÀlliga filer i Docker kan man anvÀnda en annan lösning, lÀmplig för sÄdana fall nÀr man behöver en högre prestanda jÀmfört med vad som kan uppnÄs med den standardmÀssiga mekanismen för tillfÀllig datalagring. Om du inte behöver att dina data ska lagras lÀngre Àn vad containern existerar kan du koppla en tmpfs till containern - ett tillfÀlligt lagringsutrymme som anvÀnder vÀrdmaskinens RAM-minne. Detta möjliggör snabbare lÀs- och skrivoperationer.

Det Àr ofta sÄ att data mÄste lagras Àven efter att containern har upphört att existera. För detta behöver vi mekanismer för permanent datalagring.

Permanent lagring av data

Det finns tvÄ sÀtt att förlÀnga livslÀngden pÄ data lÀngre Àn livslÀngden pÄ containern. Ett av sÀtten Àr att anvÀnda bind mount-teknologi. Med denna metod kan en verkligt existerande mapp kopplas till containern. Processer utanför Docker kan arbeta med data som lagras i denna mapp. HÀr Àr hur det ser ut tmpfs-mounting och bind mount-teknologi.

LĂ€r dig Docker, del 6: arbete med data
Tmpfs-mounting och bind mount

Nackdelarna med att anvÀnda bind mount-teknologi Àr att det komplicerar sÀkerhetskopiering av data, datamigrering och delning av data mellan flera containrar. Det Àr mycket bÀttre att anvÀnda Docker-volymer för permanent lagring av data.

Docker-volymer

En volym Àr ett filsystem som ligger pÄ vÀrdmaskinen utanför containrarna. Docker ansvarar för att skapa och hantera volymer. HÀr Àr de viktigaste egenskaperna hos Docker-volymer:

  • De Ă€r verktyg för permanent lagring av information.
  • De Ă€r sjĂ€lvstĂ€ndiga och separerade frĂ„n containrar.
  • De kan anvĂ€ndas gemensamt av olika containrar.
  • De möjliggör effektiv lĂ€sning och skrivning av data.
  • Volymer kan placeras pĂ„ resurser frĂ„n en extern molnleverantör.
  • De kan krypteras.
  • De kan ges namn.
  • Containern kan förbereda volymen med data i förvĂ€g.
  • De Ă€r bekvĂ€ma för testning.

Som ni ser har Docker-volymer fantastiska egenskaper. LÄt oss prata om hur man skapar dem.

Skapa volymer

Volymer kan skapas med hjÀlp av Docker eller via API-förfrÄgningar.

HÀr Àr en instruktion i Dockerfile som skapar en volym vid start av containern.

VOLUME /my_volume

NÀr du anvÀnder en sÄdan instruktion i Docker, kommer Docker efter att containern har skapats att skapa en volym som innehÄller data som redan finns pÄ den angivna platsen. Observera att om du skapar en volym med Dockerfile sÄ befriar det dig inte frÄn att ange monteringspunkt för volymen.

Du kan skapa volymer i Dockerfile Àven med JSON-format.

Dessutom kan volymer skapas via kommandoraden medan containern körs.

Arbeta med volymer frÄn kommandoraden

▍Skapa en volym

Du kan skapa en fristÄende volym med följande kommando:

docker volume create --name my_volume

▍Ta reda pĂ„ information om volymer

För att visa listan över Docker-volymer, anvÀnd följande kommando:

docker volume ls

För att undersöka en specifik volym kan du anvÀnda:

docker volume inspect my_volume

▍Ta bort volym

Du kan ta bort en volym sÄ hÀr:

docker volume rm my_volume

För att ta bort alla volymer som inte anvÀnds av containrar kan du anvÀnda följande kommando:

docker volume prune

Innan du tar bort Docker-volymer kommer du att bli ombedd att bekrÀfta denna ÄtgÀrd.

Om volymen Ă€r kopplad till en container kan den inte tas bort förrĂ€n den motsvarande containern har tagits bort. Även om containern har tagits bort förstĂ„r Docker inte alltid detta. Om detta hĂ€nder kan du anvĂ€nda följande kommando:

docker system prune

Detta Àr avsett för att rensa Docker-resurser. Efter att du har kört detta kommando bör du kunna ta bort volymer vars status tidigare var felaktig.

Flaggorna —mount och —volume

För att arbeta med volymer mÄste du ofta anvÀnda flaggor vid anrop av kommandot. dockerTill exempel, för att skapa en volym vid skapandet av en container kan du anvÀnda följande konstruktion:

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

Tidigare (innan 2017) var flaggan --volume. Ursprungligen anvÀndes denna flagga (ÀndÄ kan den anvÀndas i förkortad form, dÄ ser den ut som -v) för sjÀlvstÀndiga containrar, medan flaggan --mount anvÀndes i Docker Swarm-miljöer. Men frÄn Docker 17.06 kan flaggan --mount anvÀndas i alla scenarier.

Det bör noteras att anvĂ€ndningen av flaggan --mount ökar mĂ€ngden ytterligare data som mĂ„ste anges i kommandot, men av flera skĂ€l Ă€r det bĂ€ttre att anvĂ€nda just denna flagga istĂ€llet för --volume. Flaggan --mount — det Ă€r den enda mekanismen som gör att man kan arbeta med tjĂ€nster eller ange volymens drivrutinsparameter. Dessutom Ă€r det enklare att arbeta med denna flagga.

I de existerande exempelkommandona för datahantering i Docker kan du stöta pÄ mÄnga exempel som anvÀnder flaggan -v. NÀr du försöker anpassa dessa kommandon till dig, kom ihÄg att flaggorna --mount och --volume anvÀnder olika format för parametrar. Det vill sÀga, du kan inte bara byta ut -v till --mount och fÄ ett fungerande kommando.

Den huvudsakliga skillnaden mellan --mount och --volume Àr att nÀr flaggan --volume anvÀnds samlas alla parametrar tillsammans i ett fÀlt, medan vid anvÀndning av --mount parametrarna separeras.

Vid arbete med --mount parametrarna presenteras som nyckel-vÀrdepar, och det ser ut som key=value. Dessa par separeras med komman. HÀr Àr vanliga parametrar --mount:

  • typ — monteringstyp. VĂ€rdet för motsvarande nyckel kan vara bind, volym eller tmpfs. HĂ€r pratar vi om volymer, det vill sĂ€ga — vi intresserar oss för vĂ€rdet volym.
  • source — monteringskĂ€lla. För namngivna volymer Ă€r detta — volymnamnet. För icke-namngivna volymer anges inte denna nyckel. Den kan förkortas till src.
  • destination — sökvĂ€gen dĂ€r filen eller mappen monteras i containern. Denna nyckel kan förkortas till dst eller target.
  • readonly — monterar en volym som Ă€r avsedd endast för lĂ€sning. Det Ă€r valfritt att anvĂ€nda denna nyckel, inget vĂ€rde tilldelas den.

HÀr Àr ett exempel pÄ anvÀndning --mount med en mÀngd parametrar:

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

Sammanfattning

HÀr Àr anvÀndbara kommandon som kan anvÀndas vid arbete med Docker-volymer:

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

HÀr Àr en lista med vanliga parametrar för --mount, tillÀmpliga i kommandon av typen docker run --mount my_options my_image:

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

Nu nÀr vi har avslutat denna serie material om Docker Àr det dags att sÀga nÄgra ord om vart de som studerar Docker kan gÄ vidare. HÀr Àr en stor bra artikel om Docker. HÀr Àr en bok om Docker (nÀr du köper denna bok, försök att skaffa den senaste utgÄvan). HÀr Àr Ànnu en bok som passar för dem som anser att praktik Àr det bÀsta sÀttet att lÀra sig teknologier.

KÀra lÀsare! Vilka material om Docker skulle du rekommendera för nybörjare?

LĂ€r dig Docker, del 6: arbete med data

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster