Comment copier/déplacer un conteneur Docker vers un autre hôte
É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 :
Recherchez le conteneur que vous souhaitez copier, puis arrêtez l’instance :
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 :
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 :
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 create
pour 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 :
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.
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 :
Transférer une image sans créer de fichier
Parfois, vous souhaiterez peut-être ignorer la création d’un mycontainerimage.tar.gz
fichier. 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 commit
commande 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 create
commande qui s’applique à votre situation.
Enfin, démarrez votre conteneur Docker nouvellement importé en l’exécutant docker start
suivi du nom de votre conteneur.
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 ».
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