linux docker

Définition : Docker

Docker est devenu la norme de facto en ce qui concerne les mises en œuvre basées sur les conteneurs. De la mise en œuvre à petite échelle aux applications d’entreprise à grande échelle, Docker sert de base à l’orchestration basée sur les conteneurs.

Docker a gagné en peu de temps une telle popularité et une telle adoption dans la communauté DevOps grâce à la façon dont il est développé pour la portabilité et conçu pour une architecture moderne de micro-services.

L’évolution des conteneurs

Si vous pensez que la conteneurisation est une nouvelle technologie, ce n’est pas le cas. Google utilise sa propre technologie de conteneurisation dans son infrastructure depuis des années.

Le concept de conteneur a commencé dans les années 2000. En fait, les racines remontent à 1979 où nous avions le chroot, un concept de changement du répertoire racine d’un processus.

Voici une liste de projets basés sur les conteneurs qui ont débuté en 2000.

Qu’est-ce qu’un conteneur Linux (LXC) ?

Avant de plonger directement dans les concepts du Docker, il faut d’abord comprendre ce qu’est un Linux Container.

Dans un environnement virtualisé typique, une ou plusieurs machines virtuelles fonctionnent sur un serveur physique à l’aide d’un hyperviseur comme Xen, Hyper-V, etc.

Les conteneurs, d’autre part, fonctionnent au-dessus du noyau des systèmes d’exploitation. On peut appeler cela la virtualisation au niveau du système d’exploitation. Avant d’entrer dans les concepts sous-jacents des conteneurs, vous devez comprendre deux concepts clés de Linux.

  • Espace utilisateurs : Tout le code nécessaire à l’exécution des programmes utilisateurs (applications, processus) est appelé « espace utilisateur ». Lorsque vous lancez une action de programme, par exemple, pour créer un fichier, le processus dans l’espace utilisateur effectue un appel système à l’espace Kernel.
  • Espace Kernel : C’est le cœur du système d’exploitation, où se trouve le code du noyau

Un conteneur est un processus

Lorsque vous lancez une application, par exemple un serveur web Nginx, vous lancez en fait un processus. Un processus lui-même est une instruction autonome avec un isolement limité.

Et si nous pouvions isoler le processus avec seulement les fichiers et la configuration nécessaires à son exécution et à son fonctionnement. C’est ce que fait un conteneur.

Un conteneur est en fait un processus avec suffisamment d’isolation des composants de l’espace utilisateur pour qu’il donne l’impression d’un système d’exploitation séparé.

Le processus de conteneur parent peut avoir un processus enfant. On peut donc dire qu’un conteneur est aussi un groupe de processus.

Par exemple, lorsque vous lancez un service Nginx, il lance un processus Nginx parent. Le processus parent recouvre alors ses processus enfants comme le gestionnaire de cache, le chargeur de cache et les travailleurs.

Ainsi, lorsque vous démarrez un conteneur Nginx, vous lancez un processus Nginx maître dans son environnement isolé. Je vais vous montrer cela de manière pratique dans les sections ci-dessous.

Chaque conteneur a son espace utilisateur isolé, et vous pouvez exécuter plusieurs conteneurs sur un seul hôte.Cela signifie-t-il qu’un conteneur possède l’ensemble de l’OS ? Non. Contrairement à une VM avec son propre noyau, un conteneur ne contient que les fichiers nécessaires liés à une distro spécifique et utilise le noyau de l’hôte partagé. Plus intéressant encore, vous pouvez exécuter différents conteneurs basés sur des distros Linux sur un seul hôte qui partage le même espace de noyau.

Par exemple, vous pouvez faire fonctionner un RHEL, CentOS, un conteneur basé sur SUSE sur un serveur Ubuntu. C’est possible car pour toutes les distributions de Linux, seul l’espace utilisateur est différent, et l’espace du noyau est le même.

Concept sous-jacent des conteneurs Linux

L’image suivante vous donne une représentation visuelle des continus Linux.

Les conteneurs sont isolés dans un hôte en utilisant les deux caractéristiques du noyau Linux appelées espaces de noms et groupes de contrôle.

Une analogie avec le monde réel serait un immeuble d’appartements. Même s’il s’agit d’un seul grand bâtiment, chaque appartement est isolé pour les ménages individuels ayant leur propre identité avec des compteurs d’eau, de gaz et d’électricité. Nous utilisons du béton, des structures en acier et d’autres matériaux de construction pour établir cette isolation. Vous n’avez pas de visibilité dans les autres maisons, sauf si elles vous permettent d’y entrer.

De même, vous pouvez faire le lien avec un seul hôte contenant plusieurs conteneurs. Pour isoler les conteneurs avec leur propre CPU, mémoire, adresse IP, points de montage, processus, vous avez besoin de deux fonctionnalités du noyau Linux appelées espaces de noms et groupes de contrôle.

Docker c’est quoi exactement ?

Docker est un projet open-source populaire écrit en go et développé par Dotcloud (A PaaS Company).

Il s’agit essentiellement d’un moteur de conteneur qui utilise les caractéristiques du noyau Linux comme les espaces de noms et les groupes de contrôle pour créer des conteneurs sur un système d’exploitation.

A lire également  DHCP : Définition

Autrement dit, tous les concepts de conteneurs et les fonctionnalités que nous avons appris dans la section LXC sont réalisés très simplement par Docker. Il suffit d’exécuter quelques commandes et paramètres de Docker pour que les conteneurs soient opérationnels.

Vous vous demandez peut-être en quoi Docker est différent d’un Linux Container (LXC), car tous les concepts et la mise en œuvre sont similaires.

Docker a été initialement construit sur des conteneurs Linux (LXC). Plus tard, Docker a remplacé LXC par son propre conteneur d’exécution (qui fait maintenant partie de runc)

En plus d’être une technologie de conteneur, Docker possède des composants d’emballage bien définis qui facilitent les applications d’emballage. Avant le Docker, il n’était pas facile de gérer les conteneurs. En d’autres termes, il fait tout le travail nécessaire pour découpler votre application de l’infrastructure en regroupant toutes les exigences du système d’application dans un conteneur.

Par exemple, si vous avez un fichier Java jar, vous pouvez l’exécuter sur n’importe quel serveur sur lequel Java est installé. De la même manière, une fois que vous avez empaqueté un conteneur avec les applications requises en utilisant Docker, vous pouvez l’exécuter sur n’importe quel autre hôte sur lequel Docker est installé.

Différence entre docker et conteneur

Docker est une technologie ou un outil développé pour gérer efficacement la mise en œuvre des conteneurs.

Alors, puis-je gérer un conteneur sans Docker ? Oui ! Bien sûr. Vous pouvez utiliser la technologie LXC pour faire fonctionner des conteneurs sur des serveurs Linux.

Tout savoir sur docker

Docker est une plateforme de conteneurisation très utilisée. Il faut savoir que les conteneurs et les microservices sont souvent employés dans une perspective de développement et de déploiement des applications. Il s’agit du développement « cloud-native ». Docker est donc une alternative extrêmement exploitée en entreprise. Si vous voulez avoir accès à un guide complet sur docker, vous pouvez vous rendre sur le site de notre partenaire datascientest.com. Un conteneur est un environnement d’exécution léger et une alternative aux techniques de virtualisation traditionnelles provenant des machines virtuelles.


Pour parvenir à développer un logiciel moderne, il faut isoler les applications déployées sur un même hôte afin d’éviter qu’elles interfèrent. Les packages sont indispensables pour exécuter les applications. Les machines virtuelles servent à séparer les applications entre elles sur un système identique et à diminuer les conflits entre les composants logiciels et la compétition pour les ressources. Docker est une solution open source, sécurisée et économique. Docker sert également à exécuter des conteneurs sur Windows ou Mac par le biais d’une « layer » de virtualisation Linux. Vous savez donc où vous adresser pour avoir plus d’informations sur docker et comprendre tous les tenants et les aboutissants de cette plateforme de conteneurisation.

Pour parvenir à développer un logiciel moderne, il faut isoler les applications déployées sur un même hôte afin d’éviter qu’elles interfèrent. Les packages sont indispensables pour exécuter les applications. Les machines virtuelles servent à séparer les applications entre elles sur un système identique et à diminuer les conflits entre les composants logiciels et la compétition pour les ressources. Docker est une solution open source, sécurisée et économique. Docker sert également à exécuter des conteneurs sur Windows ou Mac par le biais d’une « layer » de virtualisation Linux. Vous savez donc où vous adresser pour avoir plus d’informations sur docker et comprendre tous les tenants et les aboutissants de cette plateforme de conteneurisation.

Pourquoi Docker rencontre un tel succès ?

Docker dispose d’un flux de travail efficace pour faire passer l’application de l’ordinateur portable du développeur à l’environnement de test puis à la production. Vous en saurez plus en regardant un exemple pratique de conditionnement d’une application dans une image Docker.

Savez-vous que le démarrage d’un conteneur Docker prend moins d’une seconde ?

Il est incroyablement rapide et peut fonctionner sur n’importe quel hôte avec un noyau Linux compatible. (Il est également compatible avec Windows)

Note : vous ne pouvez pas exécuter un conteneur Windows sur un hôte Linux car il n’y a pas de support du noyau Linux pour Windows. Vous pouvez lire sur les conteneurs Windows à partir d’ici

Docker utilise un système de fichier syndical de type « Copy-on-write » pour le stockage de ses images. Chaque fois que des modifications sont apportées à un conteneur, seules les modifications seront écrites sur le disque en utilisant le modèle de copie sur écriture.

Avec le modèle Copy-on-write, vous aurez des couches de stockage partagé optimisées pour tous vos conteneurs.

Yohann G.