Var lagras Docker -bilder och behållare på värden?

0
159

Docker använder två typer av format för att representera pågående processer — bilder, och behållare, och båda lagrar data på din dators enhet. Vi kommer att prata om kommandona Docker tillhandahåller för hantering av data och hur du kan använda dem för att komma åt bild- och behållarfiler.

Skillnaden mellan Bilder och behållare

Bilder är det du skapar när du kör docker build; de lagras i ett behållarregister som Docker Hub och innehåller alla filer och koder för att köra en app. Du kan tänka på dem som ISO -filer för ett virtuellt operativsystem.

Behållare skapas från bilder, och de är som den verkliga virtuella maskinen som kör programmet. Du kan ha flera behållare som körs parallellt från samma bild. Varje behållare kommer att ha sitt eget filsystem, valfritt skapat med “ volymfästen ” som binder data från värden till behållaren.

Arbeta med Docker Image Storage

Bilder lagrar hela innehållet i bilden på din enhet. När du hämtar en bild från internet laddas den ner och lagras, vanligtvis för alltid. Bilder kan vara mycket stora, så detta kan öka med tiden, särskilt för bärbara datorer med begränsat lagringsutrymme.

Om du vill komma åt bilddata direkt lagras det vanligtvis på följande platser:

  • Linux:/var/lib/docker/
  • Windows: C: ProgramData DockerDesktop
  • macOS: ~/Library/Containers/com.docker.docker/Data/vms/0/

Annonsering

Att röra vid dessa data är dock troligen en dålig idé . Dockers lagring är komplicerad och varierar faktiskt väldigt beroende på vilken lagringsdrivrutin den använder. Linux är nu som standard överlay2 på de flesta distros, vilket inte ens är tillgängligt för de flesta slutanvändare. Att röra sig med detta kan leda till dataförlust.

Istället tillhandahåller Docker hanterade kommandon för att hantera bilder. Du kan se alla versioner av nedladdade bilder med ett enkelt kommando:

docker image ls

Som tur är är det inte så illa som det ser ut, eftersom Docker -bilder lagrar versioner stegvis. Det betyder att när du laddar ner en ny version ersätter den bara de delar som ändrades. Om du ofta använder samma bild om och om igen kommer du förmodligen inte att få för mycket lagringskostnad.

Men om du använder många olika bilder kan du ha många bilder sparade som inte ens används längre. För att rensa upp dessa tillhandahåller Docker ett inbyggt kommando för att köra sophämtning. Detta kommer att beskära alla bilder som inte har några referenser, det vill säga inte taggade eller inte refererade av någon behållare.

docker image prune

För att beskära alla gamla bilder som inte används av befintliga behållare, kör den med -a flaggan: < /p> docker image prune -a

Det täcker huvudanvändningsfallet, men det finns några fler användbara kommandon:

  • inspektera: visar information om en containerversion.
  • spara & amp; load: sparar och laddar bilder till ett tjärarkiv.
  • rm: tar bort en bild direkt.
  • pull/push: uppdateringar från ett fjärrregister.
  • historik : tillhandahåller en ändringslogg.

Arbeta med Docker Container Storage

Du kan visa all information om en container med dockare inspect, som visar filsystemets drivrutiner och data, samt alla befintliga fästen och volymer.

docker inspect containerID

Annonsering

Behållare lagrar data på två sätt. Först är basfilsystemet som kopieras från bilden och är unikt för varje behållare. Docker använder en “ lägre dir ” och “ övre dir, ” som är separata lager som slås samman till ett hybridfilsystem. Den nedre dir lagrar basbilddata och den övre dir lagrar allt som ändrades vid körning, till exempel loggfiler. I båda fallen beror lagringen av dessa på filsystemdrivrutinen som Docker är konfigurerad att använda.

Sedan finns det fästen som binder kataloger från värden till behållaren, som vanligtvis hanteras automatiskt med en Docker -funktion som heter volymer. Dessa lagras normalt och är tillgängliga för slutanvändare. Om du gör något som kräver att du ändrar data på körande behållare, bör du förmodligen ändra en volym eller binda.

Öppna volymer

Bindfästen kan nås direkt och är ett bra val om du vill lagra konfigurationer som används för många behållare, eller lagra tillgänglig data som kvarstår vid behållare.

Om du vill ändra data lagrade i volymer, kan du göra det också. De lagras i ett standardformat som är tillgängligt från Linux:

/var/lib/docker/volumes/volumeID/_data

Du kan få volym -ID och information med dockningsvolyminspektion.

Annons

Ungefär som bilder kan volymer också bli inaktuella. Du kan enkelt ta bort dem, men det är en svårare process att säkerhetskopiera och överföra dem.

dockningsvolym beskära dockningsvolym rm volumeID

Ändra ett Docker Containers filsystem

Om du vill för att ändra behållarens filsystem, ungefär som bilder, är detta en dålig idé. I de flesta fall bör du skapa en ny version av behållaren med de uppdaterade ändringarna och distribuera en uppdatering.

Men om du vill göra några snabba ändringar utan att stoppa behållaren är det bästa sättet att bara öppna ett bash -skal inuti behållaren och ändra det genom Docker. Att göra det är mycket enkelt — kör docker exec på behållaren och passera “ bash ” som kommando:

docker exec -it container bash

Härifrån kan du använda vanliga Linux -kommandon. Om du vill göra detta på distans kan du installera en SSH -server i din behållare och binda port 22 till en annan port på värden.

RELATED: Så här gör du SSH i en Docker -behållare