tutorial - serveur docker




Comment copier des images docker d'un hôte à un autre sans passer par le dépôt? (9)

Courir

docker images

pour voir une liste des images sur l'hôte. Disons que vous avez une image appelée awesomesauce . Dans votre terminal, placez le cd dans le répertoire où vous voulez exporter l'image. Maintenant, lancez:

docker save awesomesauce:latest > awesomesauce.tar

Copiez le fichier tar sur une clé USB ou autre, puis copiez-le sur le nouvel ordinateur hôte.

Maintenant, à partir du nouvel hôte, faites:

docker load < awesomesauce.tar

Maintenant, allez prendre un café et lire les nouvelles hacker ...

Comment transférer l'image du docker d'une machine à l'autre sans utiliser de référentiel, quel que soit le domaine privé ou public?

Je suis habitué à jouer et à créer ma propre image dans virtualbox, et quand c'est fini, j'essaye de la déployer sur d'autres machines pour avoir une utilisation réelle.

Comme il est basé sur une image propre (comme redhat), il ne peut pas être recréé à partir de Dockerfile.

Y a-t-il des commandes simples que je peux utiliser? Ou une autre solution?

Mis à jour Il semble enregistrer / exporter peut atteindre un but similaire, voir Quelle est la différence entre enregistrer et exporter dans Docker? , et je préfère la commande save pour mon cas.


Enregistre d'abord l'image docker dans un fichier zip

docker save <docker image name> | gzip > <docker image name>.tar.gz

Puis chargez l'image exportée vers le docker en utilisant la commande ci-dessous

zcat <docker image name>.tar.gz | docker load

Je suppose que vous devez enregistrer couchdb-cartouche qui a un identifiant d'image 7ebc8510bc2c:

[email protected]:~$ docker images
REPOSITORY                             TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
couchdb-cartridge                      latest              7ebc8510bc2c        17 hours ago        1.102 GB
192.168.57.30:5042/couchdb-cartridge   latest              7ebc8510bc2c        17 hours ago        1.102 GB
ubuntu                                 14.04               53bf7a53e890        3 days ago          221.3 MB

Enregistrez l'image archiveName dans un fichier tar. J'utiliserai /media/sf_docker_vm/ pour enregistrer l'image.

[email protected]:~$ docker save imageID > /media/sf_docker_vm/archiveName.tar

Copiez le fichier archiveName.tar dans votre nouvelle instance Docker en utilisant la méthode qui fonctionne dans votre environnement, par exemple FTP , SCP , etc.

Exécutez la commande docker load sur votre nouvelle instance Docker et spécifiez l'emplacement du fichier tar de l'image.

[email protected]:~$ docker load < /media/sf_docker_vm/archiveName.tar

Enfin, exécutez la commande docker images pour vérifier que l'image est maintenant disponible.

[email protected]:~$ docker images
REPOSITORY                             TAG        IMAGE ID         CREATED             VIRTUAL SIZE
couchdb-cartridge                      latest     7ebc8510bc2c     17 hours ago        1.102 GB
192.168.57.30:5042/couchdb-cartridge   latest     bc8510bc2c       17 hours ago        1.102 GB
ubuntu                                 14.04      4d2eab1c0b9a     3 days ago          221.3 MB

S'il vous plaît trouver ce poste détaillé .


Lors de l'utilisation de docker-machine, vous pouvez faire docker $(docker-machine config <mach1>) save <image> | docker $(docker-machine config <mach2>) load docker $(docker-machine config <mach1>) save <image> | docker $(docker-machine config <mach2>) load pour copier les images entre les machines mach1 et mach2 .

Et bien sûr, vous pouvez également coller pv au milieu pour obtenir un indicateur de progrès:

docker $(docker-machine config <mach1>) save <image> | pv | docker $(docker-machine config <mach2>) load docker $(docker-machine config <mach1>) save <image> | pv | docker $(docker-machine config <mach2>) load .

Vous pouvez également omettre l'un des sous-shells de docker-machine config , pour utiliser votre docker-host par défaut actuel.

docker save <image> | docker $(docker-machine config <mach>) load docker save <image> | docker $(docker-machine config <mach>) load de copier l'image de docker-host vers mach

ou

docker $(docker-machine config <mach>) save <image> | docker load docker $(docker-machine config <mach>) save <image> | docker load pour copier de mach vers docker-host courant.


Pour transférer des images de votre docker local vers une machine virtuelle minikube:

docker save <image> | (eval $(minikube docker-env) && docker load)

Pour une exportation aplatie du système de fichiers d'un conteneur, utilisez;

docker export CONTAINER_ID > my_container.tar

Utilisez cat my_container.tar | docker import - cat my_container.tar | docker import - pour importer cette image.


Toutes les autres réponses sont très utiles. Je viens de passer par le même problème et de trouver un moyen facile avec docker machine scp .

Depuis docker machine v0.3.0, scp a été introduit pour copier des fichiers d'un docker à un autre. Ceci est très pratique si vous souhaitez copier un fichier depuis votre ordinateur local vers une machine docker distante telle que AWS EC2 ou Digital Ocean car la machine docker prend en charge les informations d'identification ssh pour vous.

  1. Sauvegardez vos images en utilisant le docker save comme:

    docker enregistrer -o docker-images.tar app-web

  2. Copiez des images en utilisant le docker-machine scp

    docker-machine scp ./docker-images.tar machine distante: / home / ubuntu

Supposons que votre machine docker distante soit remote-machine et que le répertoire dans lequel vous voulez que le fichier tar soit /home/ubuntu

  1. Charger l'image du docker

    docker-machine ssh machine-distante sudo docker load -i docker-images.tar


Transférer une image Docker via SSH, en compressant le contenu à la volée:

docker save <image> | bzip2 | \
     ssh [email protected] 'bunzip2 | docker load'

C'est aussi une bonne idée de mettre pv au milieu de la pipe pour voir comment va le transfert:

docker save <image> | bzip2 | pv | \
     ssh [email protected] 'bunzip2 | docker load'

Vous devrez enregistrer l'image docker en tant que fichier tar:

docker save -o <save image to path> <image name>

Puis copiez votre image sur un nouveau système avec des outils de transfert de fichiers réguliers tels que cp ou scp . Après cela, vous devrez charger l'image dans le docker:

docker load -i <path to image tar file>

PS: Vous devrez peut-être sudo toutes les commandes.





docker