Een Docker-container kopiëren/verplaatsen naar een andere host
Omdat Docker-containers kleine softwarepakketten zijn, kunt u ze eenvoudig van computer naar computer kopiëren en verplaatsen. Het kan zijn dat u aan een Docker-instantie op uw lokale computer hebt gewerkt en hebt besloten deze naar een krachtigere server te verplaatsen. Of misschien wilt u uw aangepaste container gewoon op meerdere computers implementeren, ‘kopiëren en plakken’. Het kan voorkomen dat u ontevreden bent over een aanbieder van cloudcomputing en wilt overstappen naar een andere. Hier laten we u zien hoe u uw bestaande Docker-containerimage en datavolumes van de ene Linux-host naar de andere kunt verplaatsen.
Bewaar containerimage van bronhost
Begin met het vermelden van de beschikbare Docker-containers die op uw systeem draaien. In mijn geval wil ik mijn Nginx Docker-container exporteren naar een nieuwe machine:
Zoek de container die u wilt kopiëren en stop vervolgens de instantie:
Een Docker-container is opgebouwd uit een generieke, initiële afbeelding. Na verloop van tijd voegt u uw eigen wijzigingen toe aan deze basisafbeelding. Processen die in de container worden uitgevoerd, kunnen ook hun eigen gegevens opslaan of andere wijzigingen aanbrengen. Om dit allemaal te behouden, legt u de huidige status van uw container vast in een nieuwe afbeelding:
Houd er rekening mee dat als de instantie momenteel actief is, deze actie deze zal pauzeren terwijl de inhoud ervan wordt opgeslagen. Als dit een probleem is, kunt u deze pauze vermijden door docker commit -p=false NAME_OF_INSTANCE mycontainerimage
in plaats daarvan naar binnen te gaan. Doe dit echter niet tenzij het absoluut noodzakelijk is. In dit geval neemt de kans toe dat er een afbeelding ontstaat met inconsistente/onvolledige gegevens.
Sla nu uw nieuw vastgelegde Docker-containerimage op in een archiefbestand:
Gebruik uw favoriete bestandsoverdrachtmethode en kopieer uw . tar-bestand naar de host waar u uw Docker-container naartoe wilt verplaatsen. De volgende opdracht bijvoorbeeld, brengt mijn Nginx Docker-image over met behulp van scp:
Een Docker-volume uit uw container exporteren
Een van de nadelen van het opslaan van een Docker-image is dat het niet wordt geleverd met de Docker-accessoires die u samen met uw container hebt ingesteld. Dit omvat alle netwerkbindkoppelingen en de volumes die u hebt gemaakt om uw persistente gegevens op te slaan.
Om uw datavolume correct te exporteren, installeert u eerst Git op uw lokale computer:
Voer de volgende opdracht uit om het volume-exportscript voor Docker te downloaden:
Zorg ervoor dat het exportscript de juiste permissiebits heeft en kopieer het vervolgens naar de map “/usr/local/bin:” op uw computer.
Test of uw script goed werkt en extraheer vervolgens alle bijbehorende volumes voor uw container:
Stuur uw nieuw gearchiveerde Docker-volumebestanden naar uw externe computer:
Containerimage laden op doelhost
Meld u aan bij uw externe host en voer vervolgens de volgende opdracht uit om deze naar de Docker-daemon van uw externe machine te laden:
Gebruik deze optie docker create
om uw Docker-containerimage opnieuw te initialiseren met de originele run-vlaggen van uw bronmachine. In mijn Nginx Docker-container was bijvoorbeeld oorspronkelijk poort 80 toegewezen aan poort 8080 van mijn hostmachine:
Voer uw nieuw geïmporteerde Docker-container uit:
Controleer of uw geïmporteerde afbeelding correct werkt door alle actieve containers in het systeem te vermelden:
Een Docker-volume importeren naar uw container
Om een. tar Docker-volumebestand, download eerst Git op uw nieuwe host:
Net als bij uw oorspronkelijke systeem downloadt u het docker-volume.sh helperscript, stelt u de permissiebits in op “execute” en kopieert u het vervolgens naar de map “/usr/local/bin” van uw nieuwe machine.
Maak een nieuwe Docker-container met behulp van uw geëxporteerde afbeeldingsbestand:
Voer het script docker-volume.sh uit met uw originele .tar-bestand om het te laden in de Docker-daemon van uw nieuwe systeem:
Start uw nieuwe Docker-container door de volgende opdracht uit te voeren:
Test of uw container uw volume correct laadt door naar de interne configuratiegegevens te kijken:
Breng een afbeelding over zonder een bestand te maken
Soms wilt u het maken van een mycontainerimage.tar.gz
bestand overslaan. Misschien hebt u niet genoeg schijfruimte omdat de container veel gegevens bevat. U kunt de afbeelding in één opdracht opslaan, overbrengen en laden op de doelhost. Nadat u de docker commit
hierboven besproken opdracht hebt uitgevoerd, kunt u dit gebruiken:
Het zou ook vanuit Windows moeten werken, aangezien er nu een ingebouwde SSH-client is (PuTTY is niet meer nodig).
Ga verder met het docker create
commando dat op uw situatie van toepassing is.
Start ten slotte uw nieuw geïmporteerde Docker-container door docker start
gevolgd door de naam van uw container uit te voeren.
Docker Compose gebruiken om een volledige Docker-implementatie te verplaatsen
Met de Compose-plug-in maakt Docker het mogelijk om complexe programma’s te bouwen, configureren en uitvoeren zonder dat u zich zorgen hoeft te maken over de onderliggende softwarestack van de server. Hierdoor kunt u reproduceerbare applicatie-implementaties bouwen op verschillende Linux-systemen.
Om te beginnen met het migreren van uw bestaande Docker-installatie naar Docker Compose, moet u er eerst voor zorgen dat de plug-in momenteel in uw systeem staat:
Maak een nieuwe map in uw thuismap voor uw Docker Compose-installatie:
Gebruik uw favoriete teksteditor om een “docker-compose.yml”-bestand voor uw toepassing te maken:
Plak het volgende codeblok in uw Compose-bestand en pas het aan uw specifieke behoeften aan:
Sla uw nieuwe Compose-bestand op en voer de volgende opdracht uit om het te starten:
Test ten slotte of uw Compose-implementatie goed werkt. In mijn geval test ik mijn Nginx Docker-container door een webbrowser te openen en naar “localhost:8080” te navigeren.
Leren hoe u uw Docker-container naar andere Linux-hosts kopieert en verplaatst, is slechts een van de weinige taken die u met uw machine kunt uitvoeren. Ontdek deze wonderlijke wereld van self-hosting door een Minecraft-server op Linux te installeren met behulp van Docker.
Afbeelding tegoed: Max Duzij via Unsplash . Alle wijzigingen en screenshots door Ramces Red.
Geef een reactie