Docker-afbeeldingen verpakken en overbrengen van de ene server naar de andere

0
133

Als u een Docker-image op uw ontwikkelmachine hebt gebouwd, en het op een server wilt implementeren, kunt u een Docker-register gebruiken, maar Docker heeft ook hulpmiddelen om afbeeldingen in bestanden op te slaan en ze op een andere server te laden.

U hebt geen containerregister nodig

Gewoonlijk gebruikt u een Docker-containerregister om een ​​build van een container (een installatiekopie genoemd) naar een externe server over te brengen. Dit is verreweg de beste methode: het is een enkel aanspreekpunt, waardoor het gemakkelijk is om updates over meerdere servers te distribueren. Dit vereist ook niet dat u de container openbaar maakt; er zijn tal van geweldige privécontainerregisters, zoals Google's GCR en AWS's ECS. De Docker Hub ondersteunt zelfs privérepository's. Als je je gewoon zorgen maakt over privacy, schakel dan over naar een privéregister en blijf docker push en docker pull gebruiken.

Voor degenen die het echter op de ouderwetse manier willen doen, bevat de Docker CLI enkele hulpmiddelen om afbeeldingen in bestanden op te slaan en ze op een externe server te laden.

Om een ​​afbeelding op te slaan, kunt u docker save gebruiken , geef een uitvoerbestand op en geef vervolgens een afbeeldingsnaam en -tag op:

docker save -o ./savedimage imagename:tag

Als u geen tag opgeeft, zal Docker alle tags verpakken.< /p> Advertentie

Hiermee wordt een kopie van de afbeelding geserialiseerd en opgeslagen onder het uitvoerbestand. De afbeelding wordt opgeslagen als een tarfile. Als je het wilt opslaan als een tar.gz, kun je de -o flag weglaten en de uitvoer naar gzip pipen:

docker save imagename:tag | gzip > Savedimage.tar.gz

U kunt dit bestand en scp of FTP-kopie vervolgens naar de doelserver brengen. Zodra het daar is, kun je docker load gebruiken om het opnieuw te importeren:

docker load -i savedimage

Dit maakt de afbeelding beschikbaar op het doelsysteem alsof je docker build had uitgevoerd. -t afbeeldingsnaam. Je kunt het net als een lokaal gebouwde image gebruiken met docker container run:

docker container run imagename