


Quelle est la différence entre la sauvegarde Docker et l'exportation Docker ?
Tout d'abord, expliquons respectivement Docker Save et Docker Export :
Docker Save
interface de ligne de commande de Docker La conception est très élégant, et l'aide pour de nombreuses commandes peut être consultée directement en ajoutant --help à la fin.
L'aide de docker save est la suivante :
>docker save --help Usage: docker save [OPTIONS] IMAGE [IMAGE...] Save one or more images to a tar archive (streamed to STDOUT by default) Options: --help Print usage -o, --output string Write to a file, instead of STDOUT
Comme le montre l'aide en ligne de commande, docker save est un outil utilisé pour empaqueter et enregistrer une ou plusieurs images.
Par exemple, si nous voulons empaqueter postgres et mongo dans la bibliothèque d'images, nous pouvons exécuter :
docker save -o images.tar postgres:9.6 mongo:3.4
Le images.tar empaqueté contient les deux images de postgres:9.6 et mongo:3.4 .
Bien que les paramètres de ligne de commande nécessitent que l'image soit spécifiée, le conteneur peut en fait être empaqueté, par exemple :
>docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3623943d369f postgres:9.6 "docker-entrypoint..." 3 hours ago Up 3 hours 5432/tcp postgres >docker save -o b.tar postgres >docker save -o c.tar postgres:9.6 >ls -al -rwxrwxrwx 1 root root 277886464 8月 26 14:40 b.tar -rwxrwxrwx 1 root root 277886464 8月 26 14:41 c.tar
Comme vous pouvez le voir dans la commande ci-dessus, b.tar et c. tar sont exactement les mêmes. Cela montre que si docker save spécifie un conteneur, docker save enregistrera l'image derrière le conteneur.
Chargez l'image empaquetée à l'aide de docker load, par exemple :
docker load -i images.tar
La commande ci-dessus chargera postgres:9.6 et mongo:3.4 Si la bibliothèque d'images locale Ces deux images existent déjà. et sera écrasé.
Le scénario d'application de docker save est le cas si votre application est une combinaison de plusieurs images disposées à l'aide de docker-compose.yml, mais que le serveur client que vous souhaitez déployer ne peut pas se connecter au réseau externe. À ce stade, vous pouvez utiliser Docker Save pour empaqueter l'image utilisée, puis la copier sur le serveur client et utiliser Docker Load pour la charger.
docker export
Comme d'habitude, vérifiez l'aide de docker export :
>docker export --help Usage: docker export [OPTIONS] CONTAINER Export a container's filesystem as a tar archive Options: --help Print usage -o, --output string Write to a file, instead of STDOUT
Comme le montre l'aide, docker export est utilisé pour convertir les fichiers conteneurs Le système est packagé. Par exemple :
docker export -o postgres-export.tar postgres
Docker export doit spécifier le conteneur et ne peut pas spécifier d'image ou de conteneur comme Docker Save.
Chargez le conteneur empaqueté à l'aide de docker import, par exemple :
docker import postgres-export.tar postgres:latest
Comme le montre la commande ci-dessus, docker import deviendra une image après l'importation du conteneur, pas une restauration vers un conteneur.
Un autre point est que l'importation Docker peut spécifier IMAGE[:TAG], ce qui signifie que nous pouvons spécifier un nouveau nom pour l'image. Si une image portant le même nom existe déjà dans la bibliothèque d'images locale, le nom de l'image d'origine sera supprimé et attribué à la nouvelle image. L'image originale deviendra un fantôme et ne pourra être utilisée que via IMAGE ID.
Le scénario d'application de Docker Export est principalement utilisé pour créer une image de base. Par exemple, vous démarrez un conteneur à partir d'une image Ubuntu, puis installez un logiciel et effectuez certains réglages, puis utilisez Docker Export pour l'enregistrer. comme image de base. Ensuite, distribuez cette image à d'autres personnes pour qu'elles puissent l'utiliser, par exemple en tant qu'environnement de développement de base.
La différence entre Docker Save et Docker Export
Docker Save enregistre l'image (image) et Docker Export enregistre le conteneur (conteneur) ;
docker load est utilisé pour charger le package d'image, et docker import est utilisé pour charger le package de conteneur, mais les deux seront restaurés dans l'image
Docker Load ne peut pas renommer l'image chargée, mais Docker Import peut spécifier un nouveau nom pour l'image.
Tutoriel recommandé : docker
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Pour créer un pilote de réseau Docker personnalisé, vous devez écrire un plugin Go qui implémente l'API NetworkDriverPlugin et communiquer avec Docker via Unix Sockets. 1. Comprenez d'abord les bases du plug-in Docker, et le pilote réseau s'exécute comme un processus indépendant; 2. Configurez l'environnement de développement GO et créez un serveur HTTP qui écoute les sockets Unix; 3. Implémentez les méthodes API requises telles que Plugin.activate, getCapabilities, CreenEnetwork, etc. et renvoyez la réponse JSON correcte; 4. Enregistrez le plug-in à / Run / Docker / Plugins / Directory et passez le dockernetwork

La fonction principale de DockerCompose est de démarrer plusieurs conteneurs en un seul clic et de gérer automatiquement les dépendances et les connexions réseau entre eux. Il définit les services, les réseaux, les volumes et autres ressources via un fichier YAML, réalise l'orchestration du service (1), crée automatiquement un réseau interne pour rendre les services interopérables (2), prend en charge la gestion du volume de données pour persister des données (3), et implémente la réutilisation et l'isolement de la configuration via différents profils (4). Convient à la construction de l'environnement de développement local (1), à la vérification préliminaire de l'architecture microservice (2), à l'environnement de test en IC / CD (3) et au déploiement autonome de petites applications (4). Pour commencer, vous devez installer Docker et son plugin Compose (1), créer un répertoire de projet et écrire Docker-Compose

Une façon courante de créer un volume Docker consiste à utiliser la commande dockervolumecreate et à spécifier le nom de volume. Les étapes incluent: 1. Créez un volume nommé à l'aide de dockervolume-créatemy-volume; 2. Montez le volume dans le conteneur via Dockerrun-vmy-volume: / path / in / conteneur; 3. Vérifiez le volume à l'aide de Dockervolumels et nettoyez les volumes inutiles avec Dockervolumeprune. De plus, le volume anonyme ou le support de liaison peut être sélectionné. Le premier génère automatiquement un ID par Docker, et le second mappe le répertoire hôte directement dans le conteneur. Notez que les volumes ne sont valides que localement et que des solutions de stockage externes sont nécessaires sur les nœuds.

Il existe trois façons courantes de définir des variables d'environnement dans un conteneur Docker: utilisez l'indicateur -e, définissez les instructions env dans un dockerfile ou gérez-les via DockerCompose. 1. L'ajout de l'indicateur -e lors de l'utilisation de Dockerrun peut passer directement des variables, ce qui convient aux tests temporaires ou à l'intégration CI / CD; 2. Utilisation d'env dans dockerfile pour définir des valeurs par défaut, qui conviennent aux variables fixes qui ne sont pas souvent modifiées, mais ne conviennent pas pour distinguer différentes configurations d'environnement; 3. DockerCompose peut définir des variables via des blocs d'environnement ou des fichiers .env, ce qui est plus propice à la collaboration et à la séparation de configuration du développement, et prend en charge le remplacement variable. Choisissez la bonne méthode en fonction des besoins du projet ou utilisez plusieurs méthodes en combinaison

Les conteneurs Docker sont un moyen léger et portable d'emballer les applications et leurs dépendances ensemble pour s'assurer que les applications s'exécutent de manière cohérente dans différents environnements. L'exécution d'instances créées en fonction des images permet aux développeurs de démarrer rapidement les programmes via des "modèles". Exécutez la commande dockerrun couramment utilisée dans les conteneurs. Les étapes spécifiques incluent: 1. Installer Docker; 2. Obtenez ou construisez un miroir; 3. Utilisez la commande pour démarrer le conteneur. Les conteneurs partagent des grains d'hôte, sont plus légers et plus rapides à démarrer que les machines virtuelles. Les débutants recommandent de commencer par l'image officielle, en utilisant Dockerps pour afficher l'état de course, en utilisant Dockerlogs pour afficher les journaux et nettoyer régulièrement les ressources pour optimiser les performances.

DockersystemRune est une commande pour nettoyer les ressources inutilisées qui suppriment les conteneurs arrêtés, les réseaux inutilisés, les images pendantes et la création de caches. 1. Exécutez DockersystemRune par défaut pour nettoyer le miroir suspendu et demander la confirmation; 2. Ajouter le paramètre -f à la confirmation de sauter; 3. Utiliser - Tout pour supprimer toutes les images inutilisées; 4. Utiliser - Viltre pour nettoyer le cache à l'heure; 5. Exécutez cette commande régulièrement pour aider à maintenir l'environnement propre et éviter un espace disque insuffisant.

Expose est utilisé dans Dockerfile pour déclarer le port réseau que le conteneur écoutera à l'exécution, mais il ne sera pas publié automatiquement à l'hôte. Son rôle principal est de fournir des conseils de documentation et de configuration pour aider les développeurs et les outils à comprendre les ports utilisés par l'application. Pour rendre le port accessible de l'extérieur, vous devez toujours utiliser le paramètre -p pour mapper lors de l'exécution du conteneur, par exemple: Dockerrun-P8080: 80my-web-app. Les principales raisons d'utiliser l'Expose comprennent l'amélioration de la clarté, la prise en charge de l'intégration des outils et les meilleures pratiques. Les conteneurs peuvent accéder directement à les ports exposés l'un de l'autre dans le même réseau personnalisé, mais pour y accéder sur l'hôte, les ports doivent être publiés explicitement. Une erreur courante est que vous oubliez de cartographier le port lors de l'exécution du conteneur, ce qui fait échouer le service.

La principale différence entre Docker et la virtualisation traditionnelle réside dans le traitement et l'utilisation des ressources de la couche du système d'exploitation. 1. Les conteneurs Docker partagent le noyau OS hôte, qui est plus léger, le démarrage plus rapide et plus d'efficacité des ressources; 2. Chaque instance d'une machine virtuelle traditionnelle gère un système d'exploitation complet, occupant plus d'espace et de ressources; 3. Le conteneur commence généralement en quelques secondes, et la machine virtuelle peut prendre plusieurs minutes; 4. Le conteneur dépend de l'espace de noms et des CGROUPS pour obtenir l'isolement, tandis que la machine virtuelle obtient un isolement plus fort grâce au matériel de simulation de l'hyperviseur; 5. Docker a une meilleure portabilité, garantissant que les applications s'exécutent de manière cohérente dans différents environnements, adaptés aux microservices et au déploiement de l'environnement cloud.
