Introduction à Linux Container / Docker (Partie 1)

Préface

Cet article s'adresse à ceux qui commencent tout juste à utiliser les conteneurs Linux et Docker. J'ai rassemblé un aperçu approximatif pour comprendre les conteneurs difficiles à atteindre si vous ne les avez pas touchés.

Comme il est long, je l'ai écrit en deux parties: Introduction à Linux Container / Docker (Part 2).

** Conteneur Linux (LXC) **

Concept de conteneur

Un conteneur est simplement une technologie qui isole une application du système d'exploitation hôte. Créez un espace isolé dans le système d'exploitation Linux et créez un environnement qui peut fonctionner sans interférer avec les processus dans d'autres conteneurs ou les processus sur le système d'exploitation hôte. En même temps, un environnement propre peut être fourni en créant un environnement distinct du système d'exploitation hôte existant.

À propos du noyau et de la distribution Linux

Avant de plonger dans les détails des conteneurs, commençons par Linux. Le mot Linux a deux significations: «noyau Linux» au sens étroit et «distribution Linux» au sens large.

Linux au sens strict: noyau Linux

Le noyau est la partie centrale du système d'exploitation et effectue la gestion de base des processus et de la mémoire. Le noyau est commun à tous les systèmes d'exploitation basés sur Linux.

Linux largement défini: distribution Linux (système d'exploitation Linux)

Le noyau Linux seul ne peut pas être installé directement sur un PC ou un serveur. Une «distribution Linux» est un paquet de divers pilotes, bibliothèques et applications nécessaires pour interagir avec HW.

Exemple:

** ⇒ Bien que cela semble différent, tous les OS Linux utilisent le même noyau Linux. ** (Bien sûr, la version est différente)

Un aperçu du conteneur et du rôle de LXC

LXC est un outil pour créer un environnement de conteneur en utilisant les fonctions du noyau Linux. Il utilise principalement les fonctions du noyau suivantes.

--Namespace… Divisez les processus et les ressources NW (telles que les cartes réseau virtuelles) afin qu'ils ne puissent pas interférer les uns avec les autres. --CGroup: Group procells et limite les ressources telles que le CPU et la mémoire qui peuvent être utilisées par chacun.

Cas conventionnel

image.png

Avec un conteneur

image.png

** Il est plus facile de comprendre (je pense) de considérer un conteneur comme un "processus isolé" que de le penser comme une "VM compacte" **

Différence entre VM et conteneur

Différence dans la façon de diviser

VM ... Émulez le matériel et démarrez le système d'exploitation dessus Container ... isole apparemment les processus et les répertoires sur le même système d'exploitation

** Les VM et les conteneurs sont similaires et différents. L'approche est exactement le contraire. ** **

aérien

VM ... entraîne une surcharge pour émuler le matériel et exécuter le système d'exploitation Conteneur ... L'entité est juste un processus en cours d'exécution sur le système d'exploitation hôte, il n'y a donc presque pas de frais généraux. (*)

Logiciel à mettre

VM ... Installez et utilisez beaucoup de logiciels comme un serveur physique Conteneur ... Fondamentalement, 1 conteneur 1 logiciel. N'entrez pas de bibliothèques et de commandes inutiles (*)

Vous pouvez le voir en utilisant la commande ps à l'intérieur du conteneur.

psax2.png

Normalement, Linux dérive un grand nombre de processus enfants du processus d'initialisation de PID1, mais vous pouvez voir que PID1 devient soudainement Apache dans le conteneur.

Habituellement comme ça. PID1 est «init». psax.png

Avantages de l'utilisation de conteneurs

Il a les mérites suivants. (Cité sur le site officiel de LXC)

  1. Sécurité améliorée En empêchant une application d'interférer avec d'autres applications, il est possible de réduire les dommages causés lorsque le système est envahi.

  2. Accouplement lâche amélioré Étant donné que les applications peuvent être exécutées dans un système d'exploitation hôte sans interférer les unes avec les autres, les modifications apportées à un logiciel n'affectent pas les autres logiciels.

  3. Abstraction du système Le conteneur masque le système d'exploitation hôte et le matériel et peut créer un environnement qui fonctionne de manière stable dans n'importe quel environnement.

Sommaire

récipient

Partie 2

Passez à Introduction à Linux Container / Docker (Partie 2).

Recommended Posts

Introduction à Linux Container / Docker (Partie 1)
Introduction à Linux Container / Docker (Partie 2)
Introduction au développement pratique de conteneurs Docker / Kubernetes
Introduction de Docker - Partie 1--
Introduction à Spring Boot, partie 1
[Linux] Démarrer le conteneur Apache avec Docker
Docker push vers GitHub Container Registry (ghcr.io)
Introduction à la sortie pratique rapide Chapitre 5 Partie 2
[Docker] Copie des fichiers du conteneur Docker vers l'hôte
La construction du conteneur Docker ne parvient pas à installer php-radis
Installer Docker avec WSL2 Memo ([Partie 2] Introduction à Docker)
[Introduction à Docker] Tutoriel officiel (traduction en japonais)
Introduction à Ruby 2
[Résumé des livres techniques] Résumé de la lecture "Introduction au développement pratique de conteneurs de Docker / Kubernetes"
Introduction à web3j
Introduction à Micronaut 1 ~ Introduction ~
[Java] Introduction à Java
Petit conteneur Docker
Introduction à la migration
Rails Docker-Partie 1-
Rails Docker ~ Partie 2 ~
Introduction à Java
Introduction à Doma
Comment vérifier le journal dans le conteneur Docker
[Docker] Introduction à docker compose Résumé de base de docker-compose.yml
Comment obtenir un heapdump à partir d'un conteneur Docker
Ingénieur en route vers Java Partie 1 Introduction et construction de l'environnement
Paramètre pour quitter le conteneur Docker avec VScode
Copier les fichiers du conteneur Docker vers l'hôte (docker cp)
J'ai créé un conteneur Docker pour exécuter Maven
Comment mettre à jour un fichier prédéfini dans un conteneur Docker
Configuration facile pour exécuter la commande docker sans sudo (Linux)
Introduction aux fichiers JAR
[Introduction à Docker x ECS] Déploiement ECS avec docker compose up
Introduction à Ratpack (8) - Session
Étapes pour pousser une image Docker vers GitHub Container Registry (ghcr.io)
Introduction aux algorithmes avec java-Dictionary Order / Combination Divers Food (Part1)
Introduction à l'arithmétique des bits
Introduction à Ratpack (6) - Promesse
Introduction à Ratpack (9) --Thymeleaf
Introduction à PlayFramework 2.7 ① Présentation
Introduction à la mise en page Android
Créer un conteneur Docker pour convertir EPS en source PGF
Comment installer Docker
Introduction aux modèles de conception (introduction)
Introduction à la programmation pratique
Introduction à la commande javadoc
Introduction à la commande jar
Introduction à Ratpack (2) -Architecture
Introduction au style lambda
Un mémorandum lors de l'installation de Docker et de la construction d'un conteneur Linux
Introduction à la commande java
Scène d'utilisation du conteneur Docker
Introduction au développement de Keycloak
Transférer une image Docker des actions GitHub vers GitHub Container Registry