Quelle est la différence entre les images Docker et les conteneurs ?


Quelle est la différence entre les images Docker et les conteneurs ?

Les conteneurs et les images Docker sont des technologies de déploiement d'applications. Traditionnellement, pour exécuter n'importe quelle application, vous deviez installer la version correspondant au système d'exploitation de votre machine. Toutefois, il est désormais possible de créer un progiciel unique, ou un conteneur, qui s'exécute sur tous les types d'appareils et de systèmes d'exploitation. Docker est une plateforme logicielle qui regroupe des prologiciels dans des conteneurs. Les images Docker sont des modèles en lecture seule qui contiennent des instructions pour créer un conteneur. Une image Docker est un instantané ou un plan des bibliothèques et des dépendances requises dans un conteneur pour qu'une application puisse s'exécuter.

En savoir plus sur Docker »

Pourquoi utilise-t-on des conteneurs et des images Docker ?

Les conteneurs permettent aux développeurs d'empaqueter des logiciels à exécuter sur n'importe quel système cible. Auparavant, vous deviez empaqueter des logiciels spécifiquement pour différents systèmes cibles. Par exemple, si vous vouliez qu'une application s'exécute sur macOS et Windows, vous deviez modifier la conception de l'application et l'adapter aux différents systèmes.

La conteneurisation permet à une application logicielle de s'exécuter sous forme de microservices sur des architectures matérielles distribuées et multiplateformes. Les conteneurs étant très portables, ces applications logicielles s'exécutent sur presque toutes les machines et peuvent être déployées rapidement. Par exemple, une application d'entreprise peut comporter des centaines de microservices. Ils peuvent fonctionner sous forme de conteneurs sur plusieurs machines et machines virtuelles (VM) dans un centre de données dédié et dans le cloud.

Comment fonctionnent-ils : des images Docker contre des conteneurs Docker

Docker est une plateforme de conteneurisation que vous pouvez utiliser pour empaqueter des logiciels dans des conteneurs et les exécuter sur des machines cibles. Les conteneurs Docker s'exécutent sur n'importe quelle machine ou machine virtuelle sur laquelle le moteur Docker est installé. Et ils fonctionnent sans connaître l'architecture sous-jacente du système. Le moteur Docker ne fonctionne que sur le système d'exploitation Linux. Un conteneur Docker est un conteneur créé à l'aide de la plateforme de conteneurisation Docker ; il existe également d'autres plateformes de conteneurisation moins populaires.

En savoir plus sur la conteneurisation »

Comment fonctionnent les conteneurs Docker

Un conteneur Docker est un environnement d'exécution contenant tous les composants nécessaires, tels que le code, les dépendances et les bibliothèques, nécessaires pour exécuter le code de l'application sans utiliser les dépendances de la machine hôte. Ce moteur d'exécution de conteneur s'exécute sur le moteur d'un serveur, d'une machine ou d'une instance cloud. Le moteur exécute plusieurs conteneurs en fonction des ressources sous-jacentes disponibles. 

Pour déployer et mettre à l'échelle un ensemble de conteneurs afin de communiquer efficacement entre différentes machines ou machines virtuelles, vous avez besoin d'une plateforme d'orchestration de conteneurs telle que Kubernetes. Cela vous permet de savoir si vos machines sont sur site ou dans le cloud. Kubernetes gère plusieurs machines, appelées clusters, dans le cadre des opérations de conteneurs.

En savoir plus sur Kubernetes »

Comment fonctionnent les images Docker

Une image Docker, ou image de conteneur, est un fichier exécutable autonome utilisé pour créer un conteneur. Cette image de conteneur contient toutes les bibliothèques, dépendances et fichiers dont le conteneur a besoin pour s'exécuter. Une image Docker est partageable et portable. Vous pouvez donc déployer la même image à plusieurs emplacements à la fois, comme dans un fichier binaire logiciel. 

Vous pouvez stocker des images dans des registres pour suivre les architectures logicielles complexes, les projets, les secteurs d'activité et les accès des groupes d'utilisateurs. Par exemple, le registre public du Docker Hub contient des images telles que des systèmes d'exploitation, des cadres de langage de programmation, des bases de données et des éditeurs de code. 

Commandes clés : images Docker contre des conteneurs Docker

Vous utilisez des commandes avec des paramètres pour manipuler les conteneurs Docker. Le format de commande standard est docker [options] [command] [arguments].

Commandes de conteneur

Le tableau suivant répertorie les commandes de conteneur fréquemment utilisées. Plusieurs autres sont répertoriées dans la documentation Docker.

Commande

Explication

docker ps -a

Répertorie tous les conteneurs. L'indicateur -a indique à la fois les conteneurs en cours d'exécution et ceux inactifs. Pour afficher uniquement les conteneurs en cours d'exécution, cet indicateur peut être omis.

renommer le docker [conteneur] [new_name]

Renomme le conteneur donné en new_name.

docker start [container]

Exécute le conteneur donné.

docker stop [container]

Arrête le conteneur donné.

docker wait [container]

Fait attendre le conteneur donné jusqu'à ce que les autres conteneurs en cours d'exécution s'arrêtent.

Commandes d'image

Il y a moins de commandes d'image que de commandes de conteneur.

Docker build -t image_name .

Construit une image Docker étiquetée image_name à partir des fichiers du répertoire actuel.

docker create [image]

Crée un conteneur inactif à partir de l'image donnée.

docker run [image] 

Crée et exécute un conteneur basé sur l'image donnée.

Création de conteneurs Docker à partir d'images Docker

Pour créer un conteneur à partir d'une image Docker spécifique, démarrez le moteur sur une machine. Ensuite, utilisez la commande Exécution de Docker de base.

Voici un exemple de commande :

docker run -it MyImage bash

Cette commande crée un conteneur à partir d'un fichier image nommé MyImage. Le -it crée un pseudo-terminal dans le conteneur en cours d'exécution. Et en spécifiant bash comme commande, un terminal bash s'ouvre dans le conteneur.

Principales différences : des images Docker et des conteneurs Docker

Un conteneur Docker est une application ou un service logiciel intégré et exécutable. D'autre part, une image Docker est le modèle chargé sur le conteneur pour l'exécuter, comme un ensemble d'instructions.

Vous stockez des images pour les partager et les réutiliser, mais vous créez et détruisez des conteneurs au cours du cycle de vie d'une application. Nous donnons ensuite plus de différences.

Source

Vous créez une image Docker à partir d'un Dockerfile, un fichier texte lisible par l'homme similaire à un fichier de configuration. Le Dockerfile contient toutes les instructions pour créer l'image. Vous devez placer le Dockerfile ainsi que toutes les bibliothèques et dépendances associées dans un dossier pour créer l'image.

En revanche, vous créez des conteneurs Docker directement à partir du fichier image Docker. 

Composition

Le fichier image Docker est composé de couches d'image afin de réduire la taille du fichier.  Chaque couche représente une modification apportée à l'image. Les couches sont en lecture seule et peuvent être partagées entre plusieurs conteneurs.

Le conteneur Docker, en tant qu'instance d'image, contient également des couches. Cependant, il comporte une couche inscriptible supplémentaire, connue sous le nom de couche conteneur, sur le dessus. La couche conteneur permet un accès en lecture-écriture. Cela permet également d'isoler toutes les modifications apportées dans le conteneur des autres conteneurs sur la base de la même image.

Mutabilité

Les images Docker sont immuables, ce qui signifie qu'elles ne peuvent pas être modifiées une fois créées. Si des modifications doivent être apportées à une image, vous devez créer une nouvelle image avec les modifications souhaitées.

En revanche, les conteneurs sont mutables et autorisent des modifications pendant l'exécution. Les modifications apportées au sein d'un conteneur sont limitées à ce conteneur en particulier et n'affectent pas l'image qui lui est associée. Certains exemples de modifications concernent l'écriture de nouveaux fichiers, l'installation de logiciels ou la modification de configurations.

Quand utiliser : des images Docker contre des conteneurs Docker

Vous pouvez utiliser des conteneurs et des images Docker en combinaison les uns avec les autres lorsque vous créez et déployez des logiciels.

Vous utilisez des conteneurs pour créer des applications une seule fois et les exécuter n'importe où. Vous pouvez démarrer, arrêter et redémarrer rapidement les conteneurs selon vos besoins. Il est donc facile de l'augmenter ou de la réduire en fonction de la demande de l'application.

Cela étant dit, la gestion est plus facile lorsque vous utilisez à la fois des images et des conteneurs. Par exemple, voici comment vous pouvez les utiliser ensemble :

  • Mettez à l'échelle votre application horizontalement en exécutant plusieurs instances de conteneurs basées sur la même image.
  • Automatisez les pipelines d'intégration et de déploiement continus (CI/CD) en utilisant différentes images pour les environnements de développement, de test et de production.
  • Marquez et gérez les différentes versions de vos images. Cela vous permet de revenir en arrière ou de déployer des versions spécifiques selon vos besoins.

Résumé des différences : des images Docker et des conteneurs Docker

 

Image Docker

Conteneur Docker

De quoi s'agit-il ?

Fichier réutilisable et partageable utilisé pour créer des conteneurs.

Une instance d'exécution ; un logiciel intégré.

Créé à partir de

Code logiciel, dépendances, bibliothèques et Dockerfile.

Une image.

Composition

Couches en lecture seule.

Couches en lecture seule avec une couche de lecture-écriture supplémentaire sur le dessus.

Mutabilité

Immuable. S'il y a des modifications, vous devez créer un nouveau fichier.

Mutable ; vous pouvez le modifier au moment de l'exécution si nécessaire.

Quand utiliser

Pour stocker les détails de configuration de l'application sous forme de modèle. 

Pour exécuter l'application.

Comment AWS peut-il vous aider à répondre à vos besoins en matière de conteneurs et d'images ?

Amazon Web Services (AWS) propose de nombreuses offres qui vous permettent de stocker et de gérer les images de vos conteneurs en toute sécurité.

Nous proposons une orchestration qui gère le moment et l'endroit où vos conteneurs s'exécutent, ainsi que des moteurs de calcul flexibles qui alimentent vos conteneurs. AWS peut vous aider à gérer vos conteneurs et leurs déploiements, de sorte que vous n'avez pas à vous inquiéter de l'infrastructure sous-jacente. Pour plus d'informations, consultez la section Conteneurs sur AWS.

Amazon Elastic Container Registry (Amazon ECR) est un registre de conteneurs entièrement géré offrant un hébergement performant. Ainsi, vous pouvez déployer des images et des artefacts d'applications de manière fiable, où que vous soyez. Les développeurs qui créent des applications basées sur des conteneurs peuvent désormais découvrir et télécharger les images officielles de Docker directement depuis Amazon ECR Public.

Amazon Elastic Container Service (Amazon ECS)  est un service d'orchestration de conteneurs entièrement géré. Il facilite le déploiement, la gestion et la mise à l’échelle des applications conteneurisées. Amazon ECS utilise des images Docker dans les définitions de tâches pour lancer des conteneurs.

Commencez à utiliser SaaS sur AWS en créant un compte dès aujourd'hui.

Étapes suivantes avec AWS