Learning Docker, del 6: arbeta med data

I dagens del av översättningen av en serie material om Docker kommer vi att prata om att arbeta med data. I synnerhet om Docker-volymer. I dessa material jämförde vi ständigt Dockers programmeringsmekanismer med olika ätbara analogier. Vi kommer inte att avvika från denna tradition här. Låt data i Docker vara kryddor. Det finns många kryddor i världen, och Docker har många sätt att arbeta med data.

Del 1: Grunderna
Del 2: termer och begrepp
Del 3: Dockerfiler
Del 4: Minska bildstorlekar och påskynda uppbyggnaden
Del 5: kommandon
Del 6: arbeta med data

Learning Docker, del 6: arbeta med data

Observera att detta material förbereddes med Docker-motorversionen 18.09.1 ​​och API-versionen 1.39.

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

Tillfällig datalagring

Det finns två sätt att hantera temporär data i Docker-behållare.

Som standard lagras filer som skapats av ett program som körs i en behållare i behållarens skrivbara lager. För att denna mekanism ska fungera behöver inget speciellt konfigureras. Det blir billigt och glatt. Applikationen behöver helt enkelt spara data och fortsätta göra sin egen grej. Men efter att behållaren upphört att existera kommer även data som sparats på detta enkla sätt att försvinna.

Tillfällig fillagring i Docker är en annan lösning som lämpar sig för fall där det krävs en högre prestandanivå jämfört med vad som är möjligt med den vanliga temporära datalagringsmekanismen. Om du inte behöver din data lagras längre än vad behållaren existerar kan du ansluta till behållaren tmpfs - ett temporärt informationsarkiv som använder värdens RAM. Detta kommer att påskynda exekveringen av dataskrivnings- och läsoperationer.

Det händer ofta att data behöver lagras även efter att behållaren upphört att existera. För att göra detta behöver vi beständiga datalagringsmekanismer.

Permanent datalagring

Det finns två sätt att göra datans livslängd längre än behållarens livslängd. Ett sätt är att använda bind mount-teknik. Med detta tillvägagångssätt kan du montera till exempel en verklig mapp på behållaren. Processer som finns utanför Docker kommer också att kunna arbeta med data som lagras i en sådan mapp. Här är hur se tmpfs mount and bind mount teknologi.

Learning Docker, del 6: arbeta med data
Montering av tmpfs och bindfäste

Nackdelarna med att använda bind mount-teknik är att dess användning komplicerar säkerhetskopiering av data, datamigrering, datadelning mellan flera behållare. Det är mycket bättre att använda Docker-volymer för beständig datalagring.

Volymer Docker

En volym är ett filsystem som finns på värddatorn utanför behållare. Volymer skapas och hanteras av Docker. Här är de viktigaste egenskaperna för Docker-volymer:

  • De är ett sätt att permanent lagra information.
  • De är oberoende och separerade från containrar.
  • De kan delas mellan olika behållare.
  • De låter dig organisera effektiv läsning och skrivning av data.
  • Volymer kan placeras på resurserna hos en fjärransluten molnleverantör.
  • De kan krypteras.
  • De kan få namn.
  • Behållaren kan ordna för förfyllning av volymen med data.
  • De är bekväma att testa.

Som du kan se har Docker-volymer fantastiska egenskaper. Låt oss prata om hur man skapar dem.

Skapa volymer

Volymer kan skapas med Docker- eller API-förfrågningar.

Här är en instruktion i Dockerfilen som låter dig skapa en volym när du startar en container.

VOLUME /my_volume

När du använder en liknande instruktion kommer Docker, efter att ha skapat behållaren, att skapa en volym som innehåller data som redan finns på den angivna platsen. Observera att om du skapar en volym med en Dockerfile, befriar detta dig inte från behovet av att ange volymens monteringspunkt.

Du kan också skapa volymer i en Dockerfil med JSON-formatet.

Dessutom kan volymer skapas med hjälp av kommandoradsverktyg medan behållaren körs.

Arbeta med volymer från kommandoraden

▍Skapa 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 se en lista över Docker-volymer, använd följande kommando:

docker volume ls

Du kan utforska en specifik volym så här:

docker volume inspect my_volume

▍Ta bort en 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 behållare kan du tillgripa följande kommando:

docker volume prune

Innan du tar bort volymer kommer Docker att be dig bekräfta denna åtgärd.

Om en volym är associerad med en behållare kan volymen inte tas bort förrän motsvarande behållare har tagits bort. Samtidigt, även om behållaren tas bort, förstår Docker inte alltid detta. Om detta händer kan du använda följande kommando:

docker system prune

Den är utformad för att rensa upp Docker-resurser. Efter att ha kört det här kommandot bör du kunna ta bort volymer vars status tidigare bestämts felaktigt.

Flaggan --mount och --volym

För att arbeta med volymer du, när du ringer kommandot docker, måste du ofta använda flaggor. Till exempel, för att skapa en volym under skapandet av behållare kan du använda följande konstruktion:

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

I antiken (fram till 2017) var flaggan populär --volume. Till en början, denna flagga (den kan också användas i en förkortad form, då ser det ut som -v) användes för fristående behållare och flaggan --mount - i en Docker Swarm-miljö. Men från och med Docker 17.06, flaggan --mount kan användas i alla scenarier.

Det bör noteras att när du använder flaggan --mount mängden ytterligare data som måste specificeras i kommandot ökar, men av flera anledningar är det bättre att använda just denna flagga, och inte --volume. Flagga --mount - Detta är den enda mekanismen som gör att du kan arbeta med tjänster eller ange volymdrivrutinparametrar. Dessutom är denna flagga lättare att arbeta med.

I de befintliga exemplen på Docker-datamanipuleringskommandon kan du se många exempel på användningen av flaggan -v. När du försöker anpassa dessa kommandon för dig själv, tänk på att flaggorna --mount и --volume använda olika parameterformat. Det vill säga, du kan inte bara byta ut -v--mount och få ett arbetslag.

Den största skillnaden mellan --mount и --volume är det när man använder flaggan --volume alla parametrar samlas i ett fält och när de används --mount parametrar separeras.

När man arbetar med --mount parametrar representeras som nyckel-värdepar, det ser nämligen ut som key=value. Dessa par är åtskilda med kommatecken. Här är de vanligaste alternativen --mount:

  • type — monteringstyp. Värdet för motsvarande nyckel kan vara binda, volym eller tmpfs. Vi pratar om volymer här, det vill säga vi är intresserade av värdet volume.
  • source — montera källa. För namngivna volymer är detta volymnamnet. För icke namngivna volymer är denna nyckel inte specificerad. Den kan förkortas till src.
  • destination - sökvägen till vilken filen eller mappen är monterad i behållaren. Denna nyckel kan förkortas till dst eller target.
  • readonly - monterar den volym som är avsedd bara för att läsa. Användningen av denna nyckel är valfri och inget värde tilldelas den.

Här är ett exempel på användning --mount med många alternativ:

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

Resultat av

Här är några användbara kommandon du kan använda när du arbetar med Docker-volymer:

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

Här är en lista över vanliga alternativ för --mount, tillämplig i ett kommando av formen docker run --mount my_options my_image:

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

Nu när vi har slutfört denna Docker-serie är det dags att säga några ord om vart Docker-elever kan gå härnäst. Här bra bra artikel om Docker. Här en bok om Docker (försök att skaffa den senaste utgåvan när du köper den här boken). Här Ännu en bok som passar dig som tror att praktik är det bästa sättet att lära sig teknik.

Kära läsare! Vilka Docker-material skulle du rekommendera för nybörjare att lära sig?

Learning Docker, del 6: arbeta med data

Källa: will.com

Lägg en kommentar