Docker-afbeeldingen en containers op een externe schijf opslaan

0
103

Docker slaat gedownloade afbeeldingen, actieve containers en persistente volumegegevens op in een enkele gedeelde directory-root op uw systeemstation. U kunt uw configuratie aanpassen om een ​​externe schijf, netwerkshare of tweede interne schijf te gebruiken als u opslagruimte aan uw installatie wilt toevoegen.

Voorbereiding

Het grootste deel van deze handleiding is van toepassing op Docker Engine voor Linux en Docker Desktop op Windows en Mac. U moet uw Docker-daemon.json-bestand op alle drie de platforms vinden. Dit zal op een van de volgende locaties zijn:

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

    Docker adviseert Windows- en Mac-gebruikers het configuratiebestand bij te werken via de gebruikersinterface, in plaats van handmatig wijzigingen aan te brengen in een teksteditor. U kunt het instellingenscherm openen door naar Voorkeuren > Docker-engine > Bewerk het bestand in de Docker Desktop-interface.

    Uw gegevensdirectory wijzigen

    De locatie van de datadirectory van Docker wordt bepaald door de data-rootinstelling in uw configuratiebestand. Oude Docker-versies die vóór 17.06 waren uitgebracht, gebruikten in plaats daarvan de grafiek. U kunt controleren welke versie u heeft door het commando docker version uit te voeren.

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

    Zoek of voeg de relevante sleutel toe in het configuratiebestand. Stel het gewenste directorypad in als waarde. Hier is een Linux-voorbeeld dat Docker-gegevens opslaat op een externe schijf die in het bestandssysteem is aangekoppeld:

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

    U moet de Docker-daemon opnieuw opstarten nadat u de wijziging hebt aangebracht:

    $ sudo service docker restart

    Docker Desktop kan opnieuw worden gestart op Windows en Mac door het af te sluiten en vervolgens een nieuwe instantie te starten.

    U moet de inhoud van uw huidige gegevensmap naar het nieuwe pad kopiëren als u uw bestaande inhoud wilt behouden. Anders begin je met een schone lei en heb je geen toegang tot eerder gemaakte containers en afbeeldingen.

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

    De datadirectory wijzigen zonder opnieuw te starten

    U kunt uw gegevensmap verplaatsen zonder de daemon opnieuw te starten door een symbolische koppeling van /var/lib/docker naar uw nieuwe locatie te maken. Dit kan handig zijn als u bijna geen ruimte meer heeft op een host waar een ongeplande herstart van de Docker-service geen haalbare optie is.

    Kopieer uw bestaande Docker-gegevens naar uw nieuwe map:

    Kopieer uw bestaande Docker-gegevens naar uw nieuwe map:

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

    Maak vervolgens een symbolische link die /var/lib/docker naar de doellocatie omzet:

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

    Gebruik deze techniek niet voor workloads die snel bestandssysteemgegevens wijzigen. Er is een risico op inconsistenties als er gegevens worden geschreven in de tijd tussen het kopiëren van de bestaande map en het maken van de symbolische link.

    Wat verandert er eigenlijk?

    Het wijzigen van de hoofdmap van Docker heeft invloed op alle verschillende gegevenstypen die de daemon opslaat. Dit omvat uw afbeeldingen, containers, geïnstalleerde plug-ins, Swarm-configuratie en volumes, evenals de Docker-buildcache.

    Als u het pad wijzigt, worden al deze gegevens naar uw nieuwe locatie geschreven. U kunt specifieke typen niet selectief verplaatsen naar afzonderlijke koppelpunten. Dit betekent dat het belangrijk is om een ​​opslaglocatie te selecteren die over het algemeen goede prestaties biedt. Het gebruik van een trage externe schijf kan het reactievermogen van docker CLI-bewerkingen schaden, zelfs als dit geschikt is voor bepaalde soorten gegevens, zoals langdurige beeldopslag.

    Bij gebrek aan ondersteuning per type datapad, kan het opruimen van ongebruikte bronnen een betere manier zijn om de opslagvereisten van Docker te beheren. In plaats van Docker meer ruimte toe te wijzen, ruimt u overtollige activa op en pusht u ongebruikte afbeeldingen naar een afzonderlijk centraal register. Dit kan aanzienlijke ruimte vrijmaken op uw host.

    Eenmalig gebruik van een andere gegevensmap

    < p>U kunt Docker Engine handmatig starten met een specifieke gegevensmap door de vlag –data-root door te geven wanneer u de daemon start. Dit kan worden gebruikt om te schakelen tussen gegevensmappen of om een ​​schone instantie uit te voeren zonder uw bestaande gegevens.

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

    De vlag overschrijft de directorypad gespecificeerd door het bestand daemon.json. De geconfigureerde map blijft intact, zodat u in de toekomst naar die instantie kunt terugkeren.

    Samenvatting

    Docker slaat al zijn gegevens op, inclusief gebouwde en getrokken afbeeldingen, gemaakte containers en volumes in een enkele directorystructuur. De root is meestal /var/lib/docker, maar u kunt deze aanpassen door een instelling aan uw configuratiebestand toe te voegen of de –data-root-vlag op te geven wanneer u de daemon start.

    Het wijzigen van de datadirectory betekent uw bestaande gegevens verschijnen niet in Docker, tenzij u deze naar het nieuwe pad kopieert. U kunt deze functie gebruiken om verschillende onafhankelijke Docker-opslagplaatsen te onderhouden, zoals een voor persoonlijke projecten en een andere voor werk. U moet de daemon echter opnieuw opstarten voordat u van context wisselt, aangezien er maar één instantie tegelijk kan worden uitgevoerd.

    LEES VOLGENDE

    • › Asus’ Nieuwe desktop-pc heeft poorten voor USB Type-C en… PS/2?
    • › Nieuwe bedrade Nest-deurbel heeft meer functies in een kleiner pakket
    • › Welke Chromebooks ondersteunen Steam?
    • › Google Home-app heeft een nieuwe look en krachtigere automatisering
    • › Kun je geen Raspberry Pi vinden? Koop in plaats daarvan een gebruikte NUC
    • › De nieuwe mesh-router van Google biedt ondersteuning voor Wi-Fi 6E en Matter