Een Docker-container kopiëren/verplaatsen naar een andere host

Een Docker-container kopiëren/verplaatsen naar een andere host
Een foto van een persoon die aan een computerbureau werkt.

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:

Een terminal die de beschikbare Docker-containers voor een systeem markeert.

Zoek de container die u wilt kopiëren en stop vervolgens de instantie:

Een terminal die de uitvoer van het docker-stopcommando toont.

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:

Een terminal met de uitvoer van de opdracht docker commit waarmee een nieuwe image wordt gemaakt op basis van de huidige image.

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 mycontainerimagein 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:

Een terminal die het proces toont van het maken van een back-up van eventuele bijbehorende datavolumes voor een Docker-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 createom 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 terminal met dezelfde Docker-containerimage die op een ander systeem draait.

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.

Een terminal die het proces toont voor het verkrijgen en installeren van het Docker Volume-script voor het maken van back-ups van gegevens die aan containers zijn gekoppeld.

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:

Een terminal die de geïmporteerde volumegegevens naar de nieuwe machine markeert.

Breng een afbeelding over zonder een bestand te maken

Soms wilt u het maken van een mycontainerimage.tar.gzbestand 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 commithierboven 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 createcommando dat op uw situatie van toepassing is.

Een terminal die het proces laat zien van het maken van een nieuwe Docker-container nadat de image ervan via een SSH-pijplijn is verplaatst.

Start ten slotte uw nieuw geïmporteerde Docker-container door docker startgevolgd door de naam van uw container uit te voeren.

Een terminal die het proces van het starten van een nieuwe container laat zien en bevestigt dat deze goed werkt.

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.

Een screenshot waarin de geïmporteerde Nginx Docker-container correct werkt op de nieuwe machinehost.

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

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *