Hur man lagrar Docker-bilder och behållare på en extern enhet

0
104

Docker lagrar nedladdade bilder, körande behållare och beständiga volymdata i en enda delad katalogrot på din systemenhet. Du kan anpassa din konfiguration för att använda en extern enhet, nätverksresurs eller andra intern skiva om du behöver lägga till lagring till din installation.

Förberedelser

Huvuddelen av den här guiden gäller Docker Engine för Linux och Docker Desktop på Windows och Mac. Du måste hitta din Docker daemon.json-fil på alla tre plattformarna. Detta kommer att finnas på en av följande platser:

  • /etc/docker/daemon.json på Linux.
  • %programdata%dockerconfigdaemon.json på Windows.
  • ~/Library/Containers/com.docker.docker/Data/database/com.docker.driver.amd64-linux/etc/docker/daemon.json på Mac.
  • < /ul>

    Docker rekommenderar att Windows- och Mac-användare uppdaterar konfigurationsfilen via användargränssnittet, istället för att manuellt tillämpa ändringar i en textredigerare. Du kan komma åt inställningsskärmen genom att gå till Inställningar > Docker Engine > Redigera fil i Docker Desktop-gränssnittet.

    Ändra din datakatalog

    Platsen för Dockers datakatalog styrs av datarotinställningen i din konfigurationsfil. Gamla Docker-versioner släppta före 17.06 använde graf istället. Du kan kontrollera vilken version du har genom att köra kommandot docker version.

    $ docker version … Server: Docker Engine – Community Engine: Version: 20.10.17

    Hitta eller lägg till relevant nyckel inuti konfigurationsfilen. Ställ in önskad katalogsökväg som dess värde. Här är ett Linux-exempel som lagrar Docker-data på en extern enhet som är monterad i filsystemet:

    { "data-root": "/mnt/docker-data" }

    Du måste starta om Docker-demonen efter att du har gjort ändringen:

    $ sudo service docker restart

    Docker Desktop kan startas om på Windows och Mac genom att avsluta det och sedan starta en ny instans.

    Du bör kopiera innehållet i din nuvarande datakatalog till den nya sökvägen om du vill behålla ditt befintliga innehåll. Annars börjar du med ett rent blad, och kan inte komma åt tidigare skapade behållare och bilder.

    $ sudo rsync -aSv /var/lib/docker//mnt/docker-data

    Ändra datakatalogen utan omstart

    Du kan flytta din datakatalog utan att starta om demonen genom att skapa en symbollänk från /var/lib/docker till din nya plats. Detta kan vara användbart om du får ont om utrymme på en värd där en oplanerad omstart av Docker-tjänsten inte är ett genomförbart alternativ.

    Kopiera din befintliga Docker-data till din nya katalog:

    p> $ sudo rsync -aSv /var/lib/docker//mnt/docker-data

    Skapa sedan en symbollänk som löser /var/lib/docker till målplatsen:

    $ sudo ln -s/mnt/docker-data//var/lib/docker

    Använd inte den här tekniken för arbetsbelastningar som snabbt ändrar filsystemdata. Det finns en risk för inkonsekvenser om data skrivs under tiden mellan att du kopierar den befintliga katalogen och skapar symbollänken.

    Vad ändras egentligen?

    Att ändra Dockers rotkatalog påverkar alla olika datatyper som demonen lagrar. Detta inkluderar dina bilder, behållare, installerade plugins, Swarm-konfiguration och volymer, såväl som Docker build-cache.

    Om du ändrar sökvägen kommer all denna data att skrivas till din nya plats. Du kan inte selektivt flytta specifika typer till separata monteringspunkter. Det betyder att det är viktigt att välja en lagringsplats som ger bra övergripande prestanda. Att använda en långsam extern enhet kan skada reaktionsförmågan hos docker-CLI-operationer, även om det skulle passa vissa typer av data, såsom långtidslagring av bilder.

    I avsaknad av stöd för varje typ av dataväg kan beskärning av oanvända resurser vara ett bättre sätt att hantera Dockers lagringskrav. Istället för att tilldela Docker mer utrymme, rensa upp redundanta tillgångar och skicka oanvända bilder till ett separat centralt register. Detta kan frigöra avsevärt utrymme på din värd.

    Engångsanvändning av en annan datakatalog

    < p>Du kan manuellt starta Docker Engine med en specifik datakatalog genom att skicka flaggan –data-root när du startar demonen. Detta kan användas för att växla mellan datakataloger eller köra en ren instans utan dina befintliga data.

    $ sudo /usr/bin/dockerd –data-root /mnt/docker-data

    Flaggan kommer att åsidosätta katalogsökväg som anges av filen daemon.json. Den konfigurerade katalogen kommer att förbli intakt så att du kan återgå till den instansen i framtiden.

    Sammanfattning

    Docker lagrar all sin data inklusive byggda och hämtade bilder, skapade behållare och volymer i ett enda katalogträd. Roten är vanligtvis /var/lib/docker men du kan anpassa den genom att lägga till en inställning i din konfigurationsfil eller ange –data-root-flaggan när du startar demonen.

    Att ändra datakatalogen innebär din befintliga data visas inte i Docker om du inte kopierar den till den nya sökvägen. Du kan använda den här funktionen för att underhålla flera oberoende Docker-lagringsförråd, till exempel en för personliga projekt och en annan för arbete. Du måste dock starta om demonen innan du byter sammanhang, eftersom endast en instans kan köras samtidigt.

    LÄS NÄSTA

    • › Vilka Chromebooks stöder Steam?
    • › Ny trådbunden Nest Doorbell har fler funktioner i ett mindre paket
    • › Asus’ Ny stationär PC har portar för USB Type-C och… PS/2?
    • › Kan du inte hitta en Raspberry Pi? Köp en begagnad NUC istället
    • › Google Home-appen har ett nytt utseende och mer kraftfull automatisering
    • › Googles nya mesh-router har Wi-Fi 6E och Matter-support