Docker-afbeeldingen delen met anderen

0
158

Heeft u een Docker-afbeelding gemaakt die u met een collega wilt delen? Hier leest u hoe u een afbeelding kunt distribueren zonder dat de ontvanger zelf docker build hoeft uit te voeren.

Door een vooraf gebouwde afbeelding te delen in plaats van een Dockerfile weet u zeker dat uw collega exact dezelfde software gebruikt . Het opnieuw uitvoeren van de build kan resulteren in een subtiel andere omgeving. Je hebt twee opties om je afbeelding te verspreiden, afhankelijk van de situatie.

Een Docker-register gebruiken

De gemakkelijkste manier om een ​​Docker-image te delen is door het naar een Docker-register te pushen. Deze functionaliteit is volledig geïntegreerd in de Docker CLI. U hoeft geen handmatige bestandsoverdrachten uit te voeren wanneer u deze methode gebruikt.

Het standaardregister is Docker Hub. Hiermee kunt u afbeeldingen openbaar delen en krijgt u ook één privérepository. Maak een account aan op Docker Hub en voer vervolgens docker-login uit in uw terminal. Geef uw accountgegevens op om de Docker CLI aan uw account te koppelen.

Bouw vervolgens uw afbeelding zoals u gewend bent, met behulp van docker build. Voeg een tag toe die begint met uw Docker Hub-gebruikersnaam:

docker build -t my-account/my-image:latest . Advertentie

Gebruik vervolgens de opdracht docker push om de getagde afbeelding naar Docker Hub te pushen:

docker push my-account/my-image:latest

Nu is uw afbeelding veilig opgeslagen in Docker Hub. Andere gebruikers kunnen het naar beneden halen met behulp van de docker pull- of docker run-commando's. Je bent klaar met het delen van je afbeelding!

Voor gebruik in de echte wereld is Docker Hub misschien niet voldoende. Als u deel uitmaakt van een ontwikkelteam, wilt u waarschijnlijk afbeeldingen op uw eigen server bewaren in plaats van in het openbare Hub-register. U kunt in plaats daarvan een zelf-gehoste registerserver maken om privéopslag te krijgen die volledig compatibel is met de docker-push- en docker-pull-opdrachten. Hierdoor kunt u eenvoudig afbeeldingen delen met iedereen die toegang heeft tot uw privéregister.

Afbeeldingen exporteren

Als het gebruik van een register geen optie is, kunt u in plaats daarvan handmatig Docker-afbeeldingsarchieven exporteren. Deze functionaliteit is ook ingebouwd in de Docker CLI. Bouw uw afbeelding en gebruik dan de opdracht docker save om een ​​tar-archief van de inhoud te krijgen:

docker save my-image:latest > mijn-afbeelding.tar

Het kan even duren voordat het exporteren is voltooid. Docker bevat alles wat nodig is om de afbeelding – dat zijn alle lagen in je Dockerfile, evenals de lagen die zijn geërfd van je basisafbeelding. Het archief zal ook informatie bevatten over tags die aan de afbeelding zijn gekoppeld.

Omdat de uitvoer een eenvoudig tar-bestand is, bent u nu vrij om het op elke gewenste manier te verspreiden. Archieven kunnen behoorlijk groot zijn, dus u bent meestal het beste af door het te uploaden naar een bestandsserver of een cloudopslagprovider.

Advertentie

Om een ​​geëxporteerde afbeelding te gebruiken, voert u de opdracht docker load uit. Dit accepteert een door docker geproduceerd tar-archief als invoerstroom. Docker laadt de inhoud van het archief en voegt het toe aan uw lijst met lokale afbeeldingen.

docker load < my-image.tar

U ziet nu de nieuw geïmporteerde afbeelding in de uitvoer van uw docker-afbeeldingen. U bent klaar om een ​​nieuwe container te starten met docker-run.

Het exporteren en importeren van afbeeldingen voegt een paar extra stappen toe aan het gebruik van een Docker-register. U moet het bestand handmatig tussen de clients overbrengen. Daarom is deze aanpak minder geschikt voor frequent gebruik, hoewel het ook zijn voordelen heeft.

Het converteren van afbeeldingen naar een tar-archief kan handig zijn voor langdurige opslag. Als u bijna geen ruimte meer heeft op uw registerserver, kan het archiveren van oude afbeeldingen en het uploaden van hun tars naar back-upbestandsopslag een kosteneffectieve manier zijn om wat capaciteit terug te winnen. U kunt de afbeelding nog steeds herstellen als dat in de toekomst nodig is.

Hoe zit het met “docker-export” ?

Docker heeft nog een ander exportgerelateerd commando, docker export. Dit moet niet worden verward met docker save. Terwijl opslaan werkt met afbeeldingen, beheert export eigenlijk individuele containers.

docker-export zal een tar-archief van het bestandssysteem van een container produceren. Dit kan worden gebruikt om een ​​replica van de container op een andere machine te herstellen. Als je de inhoud van het archief inspecteert, zul je zien dat het gewoon een gewoon Linux root-bestandssysteem is, met mappen als /bin, /etc en /usr.

docker export mijn-container > my-container.tar Advertentie

docker-export is handig als u een momentopname van een container wilt maken voor later herstel. Containerarchieven worden echter niet geïmporteerd op de manier die u in eerste instantie zou verwachten. Aangezien een container een live, actieve omgeving vertegenwoordigt, kunt u niet “importeren” een direct. In plaats daarvan wordt door het importeren van een containerarchief een nieuwe afbeelding geconstrueerd.

docker import my-container.tar my-image:latest

In dit voorbeeld neemt Docker het bestandssysteem in my-container.tar en maakt automatisch een nieuwe afbeelding met de naam my-image:latest. Dit heeft hetzelfde bestandssysteem, maar niet dezelfde basisimage of Docker-configuratie als de originele container die je hebt geëxporteerd.

GERELATEERD: Aan de slag met de nieuwe Docker-container van Github Register

Samenvatting

Docker maakt het gemakkelijk om applicatie-images en ontwikkelomgevingen te delen met uw medewerkers. Het is meestal het beste om afbeeldingen naar een gecentraliseerde repository te pushen waar alle anderen uit kunnen halen. In sommige scenario's kan het zinvoller zijn om een ​​afbeelding te exporteren naar een archief dat u handmatig distribueert.

Met Docker kunt u ook het bestandssysteem van een container exporteren om later naar een afbeelding te herstellen. Wees voorzichtig wanneer u dit gebruikt, aangezien het geen exacte reconstructie is en niet alle bestandssysteemgegevens worden opgenomen. Alle volumes die aan de originele container zijn gekoppeld, worden niet opgenomen in het bestandssysteemarchief, dus u moet stappen ondernemen om deze afzonderlijk te back-uppen.