Comment copier/déplacer un conteneur Docker vers un autre hôte

Comment copier/déplacer un conteneur Docker vers un autre hôte
Une photographie d’une personne travaillant sur un bureau d’ordinateur.

Étant donné que les conteneurs Docker sont de petites boîtes de logiciels, vous pouvez facilement les copier et les déplacer d’un ordinateur à l’autre. Il se peut que vous ayez travaillé sur une instance Docker sur votre ordinateur local et décidé de la déplacer vers un serveur plus puissant. Ou peut-être souhaitez-vous simplement déployer votre conteneur personnalisé sur plusieurs ordinateurs, en le « copieant et en le collant ». D’autres fois, vous pourriez être insatisfait d’un fournisseur de cloud computing et souhaiter en changer. Ici, nous vous montrons comment déplacer votre image de conteneur Docker et vos volumes de données existants d’un hôte Linux à un autre.

Enregistrer l’image du conteneur à partir de l’hôte source

Commencez par répertorier les conteneurs Docker disponibles exécutés sur votre système. Dans mon cas, je souhaite exporter mon conteneur Nginx Docker vers une nouvelle machine :

Un terminal mettant en évidence les conteneurs Docker disponibles pour un système.

Recherchez le conteneur que vous souhaitez copier, puis arrêtez l’instance :

Un terminal affichant la sortie de la commande docker stop.

Un conteneur Docker est construit à partir d’une image initiale générique. Au fil du temps, vous ajoutez vos propres modifications à cette image de base. Les processus exécutés à l’intérieur du conteneur peuvent également enregistrer leurs propres données ou apporter d’autres modifications. Pour conserver tout cela, validez l’état actuel de votre conteneur dans une nouvelle image :

Un terminal affichant la sortie de la commande docker commit créant une nouvelle image à partir de celle en cours d'exécution.

Notez que si l’instance est en cours d’exécution, cette action la mettra en pause pendant que son contenu est enregistré. Si cela pose un problème, vous pouvez éviter cette pause en entrant docker commit -p=false NAME_OF_INSTANCE mycontainerimageà la place. Cependant, ne faites pas cela à moins que cela ne soit absolument nécessaire. Les risques de créer une image avec des données incohérentes/incomplètes augmentent dans ce cas.

Maintenant, enregistrez votre image de conteneur Docker nouvellement validée dans un fichier d’archive :

Utilisez votre méthode de transfert de fichiers préférée et copiez votre fichier . tar sur l’hôte vers lequel vous souhaitez déplacer votre conteneur Docker. Par exemple, la commande suivante transfère mon image Docker Nginx à l’aide de scp :

Exporter un volume Docker depuis votre conteneur

L’un des inconvénients de l’enregistrement d’une image Docker est qu’elle n’est pas fournie avec les accessoires Docker que vous avez configurés avec votre conteneur. Cela inclut tous les montages de liaison réseau et les volumes que vous avez créés pour stocker vos données persistantes.

Pour exporter correctement votre volume de données, installez d’abord Git sur votre machine locale :

Exécutez la commande suivante pour télécharger le script d’exportation de volume pour Docker :

Assurez-vous que le script d’exportation dispose des bons bits d’autorisation, puis copiez-le dans le répertoire « /usr/local/bin : » de votre machine

Testez si votre script fonctionne correctement, puis extrayez tous les volumes associés à votre conteneur :

Un terminal montrant le processus de sauvegarde de tous les volumes de données associés pour un conteneur Docker.

Envoyez vos fichiers de volume Docker nouvellement archivés à votre machine distante :

Charger l’image du conteneur sur l’hôte de destination

Connectez-vous à votre hôte distant, puis exécutez la commande suivante pour le charger sur le démon Docker de votre machine distante :

Utilisez cette commande docker createpour réinitialiser l’image de votre conteneur Docker avec ses indicateurs d’exécution d’origine à partir de votre machine source. Par exemple, mon conteneur Docker Nginx avait à l’origine le port 80 mappé sur le port 8080 de ma machine hôte :

Exécutez votre conteneur Docker nouvellement importé :

Confirmez que votre image importée fonctionne correctement en répertoriant tous les conteneurs actifs dans le système :

Un terminal affichant la même image de conteneur Docker exécutée sur un système différent.

Importer un volume Docker dans votre conteneur

Pour importer un fichier de volume Docker . tar, téléchargez d’abord Git sur votre nouvel hôte :

Tout comme avec votre système d’origine, téléchargez le script d’assistance docker-volume.sh, définissez ses bits d’autorisation sur « exécuter », puis copiez-le dans le répertoire « /usr/local/bin » de votre nouvelle machine.

Un terminal montrant le processus d'obtention et d'installation du script Docker Volume pour sauvegarder les données associées aux conteneurs.

Créez un nouveau conteneur Docker à l’aide de votre fichier image exporté :

Exécutez le script docker-volume.sh avec votre fichier .tar d’origine pour le charger dans le démon Docker de votre nouveau système :

Démarrez votre nouveau conteneur Docker en exécutant la commande suivante :

Testez si votre conteneur charge correctement votre volume en examinant ses données de configuration internes :

Un terminal mettant en évidence les données de volume importées sur la nouvelle machine.

Transférer une image sans créer de fichier

Parfois, vous souhaiterez peut-être ignorer la création d’un mycontainerimage.tar.gzfichier. Peut-être que vous ne disposez pas de suffisamment d’espace disque car le conteneur contient beaucoup de données. Vous pouvez enregistrer, transférer et charger l’image sur l’hôte de destination en une seule commande. Après avoir exécuté la docker commitcommande décrite ci-dessus, vous pouvez utiliser ceci :

Cela devrait également fonctionner sous Windows, car il dispose désormais d’un client SSH intégré (PuTTY n’est plus nécessaire).

Continuez avec la docker createcommande qui s’applique à votre situation.

Un terminal montrant le processus de création d'un nouveau conteneur Docker après avoir déplacé son image via un canal SSH.

Enfin, démarrez votre conteneur Docker nouvellement importé en l’exécutant docker startsuivi du nom de votre conteneur.

Un terminal montrant le processus de démarrage d'un nouveau conteneur et confirmant qu'il fonctionne correctement.

Utilisation de Docker Compose pour déplacer un déploiement Docker complet

Avec son plugin Compose, Docker permet de créer, configurer et exécuter des programmes complexes sans se soucier de la pile logicielle sous-jacente du serveur. Ceci, à son tour, vous permet de créer des déploiements d’applications reproductibles sur différents systèmes Linux.

Pour commencer à migrer votre configuration Docker existante vers Docker Compose, assurez-vous d’abord que son plugin est actuellement dans votre système :

Créez un nouveau dossier dans votre répertoire personnel pour votre installation de Docker Compose :

Utilisez votre éditeur de texte préféré pour créer un fichier « docker-compose.yml » pour votre application :

Collez le bloc de code suivant dans votre fichier Compose, puis ajustez-le selon vos besoins spécifiques :

Enregistrez votre nouveau fichier Compose, puis exécutez la commande suivante pour le démarrer :

Enfin, testez si votre déploiement Compose fonctionne correctement. Dans mon cas, je vais tester mon conteneur Docker Nginx en ouvrant un navigateur Web et en accédant à « localhost:8080 ».

Une capture d'écran montrant le conteneur Nginx Docker importé fonctionnant correctement sur sa nouvelle machine hôte.

Apprendre à copier et déplacer votre conteneur Docker vers d’autres hôtes Linux n’est que l’une des rares tâches que vous pouvez effectuer avec votre machine. Explorez ce monde merveilleux de l’auto-hébergement en installant un serveur Minecraft sous Linux à l’aide de Docker.

Crédit image : Max Duzij via Unsplash . Toutes les modifications et captures d’écran par Ramces Red.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *