Introduction à Linux Container / Docker (Partie 2)

Partie 1

Ceci est une suite de Introduction à Linux Container / Docker (Part 1).

Docker

Moteur de conteneur OSS fourni par Docker. (Il existe également une version payante)

Comme mentionné ci-dessus, LXC n'est pas très pratique car il ne possède que les fonctions minimales </ u> ** ⇒ Docker ** est une extension de LXC qui est enveloppée pour le rendre plus facile à manipuler.

  • Auparavant, Docker utilisait LXC en interne, mais maintenant cela semble être différent. Cependant, l'idée ci-dessus ne change pas.

Présentation de Docker

Docker est un outil qui englobe la technologie LXC mentionnée ci-dessus et la rend plus facile à utiliser. Les fonctions suivantes sont ajoutées.

--Portabilité, fonction de partage Docker a la capacité d'archiver des conteneurs dans des fichiers tar et de les envoyer à d'autres machines physiques ou de les partager via le registre de conteneurs. En conséquence, le conteneur créé peut être détourné vers une autre machine.

  • Focus sur l'application LXC a été créé à l'origine du point de vue d'une «machine virtuelle légère», mais Docker permet de rendre LXC plus léger et plus facile, ce qui facilite la conteneurisation de chaque application et de chaque processus.

  • IaC Les fichiers à créer dans le conteneur et les applications à installer peuvent être définis au format Dockerfile. Cela permet de définir le contenu du conteneur de manière IaC.

  • contrôle de version Les conteneurs créés avec Docker peuvent recevoir un numéro de version et peuvent être gérés avec Docker. En conséquence, la gestion des différences entre les versions et la restauration en cas de problème peuvent être réalisées.

  • Réutilisation des composants Docker crée une image de conteneur sous la forme d'ajout de fichiers et d'applications à une image de conteneur existante à l'aide d'un mécanisme appelé couches. En partageant les parties communes à plusieurs conteneurs, la capacité du disque et les coûts de gestion peuvent être réduits.

  • écosystème Docker est le moteur de conteneur le plus important et est entouré d'un vaste écosystème. Les exemples incluent les logiciels et services associés suivants.

--Docker Hub… Un site qui partage des conteneurs Docker sur Internet --Docker-Compose… Logiciel pour lancer plusieurs conteneurs en coopération --Kubernetes… Logiciel qui vous permet d'exploiter les conteneurs de manière plus flexible en formant un cluster avec un grand nombre d'hôtes Linux (décrit plus loin).

Termes et composants Docker

Images et instances

Dans le cas de la VM, l'image est un modèle et l'instance est la VM en cours d'exécution. En interne, l'instance fait uniquement référence à l'image, donc la copie n'a pas lieu au démarrage. En spécifiant le nom de l'image avec la commande Docker et run, le conteneur Linux est réellement créé.

image.png

Dans Docker, de nouvelles images sont créées en ajoutant des fichiers aux images existantes et en exécutant des commandes. Pour les principaux OSS, l'image officielle du conteneur est publiée sur un site Internet appelé Docker Hub. Lors de son utilisation réelle, il arrive souvent qu'une image personnalisée soit créée et utilisée en ajoutant des valeurs de réglage à l'image officielle.

image.png

Dockerfile

La définition pour créer une image (quel fichier ajouter, quelle commande exécuter) est décrite dans le texte Dockerfile. La création d'une image de conteneur à l'aide d'un Dockerfile s'appelle une build.

  • Image du conteneur (image de base) + Dockerfile => (build) => ** Image du conteneur (image personnalisée) ** --Container image => (lancement) => ** Instance de conteneur **

Comme indiqué dans l'exemple ci-dessous, il est essentiellement créé en ajoutant un fichier ou en exécutant une commande sur une image de conteneur existante extraite du hub Docker ou similaire. Il n'est pas impossible de fabriquer un conteneur à partir de zéro, mais c'est beaucoup de travail, mais il y a peu d'avantages, il vaut donc mieux s'arrêter.

Créez un conteneur pour exécuter un programme Python appelé app.py comme suit. (Le package etc. qui est inclus est juste écrit de manière appropriée à titre d'exemple, il n'y a pas de signification particulière)

Dockerfile


#Créé à partir de l'image officielle Python
FROM python:3.7.6-stretch

#Installer le package avec pip
RUN pip install pip --upgrade && \
    pip install numpy scipy

#Installer le package avec apt
RUN apt-get update -y && \
    DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
    sshpass

#Créer un annuaire
WORKDIR /work

#Placez le programme
COPY app.py /work

#Spécifiez la première commande à exécuter lors du démarrage d'une instance de conteneur
ENTRYPOINT python /work/app.py

Après avoir écrit et enregistré ceci, vous pouvez construire le conteneur en le chargeant avec la commande docker build.

Registre des conteneurs

Un mécanisme pour partager l'image de conteneur créée. De nombreuses images de conteneur OSS et images de conteneur créées personnellement sont publiées sur Docker Hub sur Internet. (!) Veuillez noter que vous ne savez pas ce qu'il y a à l'intérieur de l'image publiée par l'individu.

Lorsque vous travaillez dans un environnement fermé, il est souhaitable de configurer un registre de conteneurs dans ce réseau.

image.png

Le téléchargement d'une image à partir du registre s'appelle «pull» et son téléchargement s'appelle «push».

Sommaire

Docker

  • ** Image du conteneur **… Modèle de conteneur. Ajouter (modifier) des fichiers à une image existante Vous pouvez créer une image personnalisée.

  • ** Instance de conteneur **… L'environnement d'exécution réel créé à partir de l'image du conteneur. En interne, il ne fait référence qu'à l'image, il est donc créé pour un moment. Je n'utilise pas beaucoup de stockage.

  • ** Container Registry **… Un endroit pour stocker les images de conteneurs. C'est sur Internet et peut être configuré localement.

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)
[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
[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
Copier les fichiers du conteneur Docker vers l'hôte (docker cp)
J'ai créé un conteneur Docker pour exécuter Maven
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 à 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
Introduction à la commande javac
[Introduction à Docker] ~ Explication la plus courte jusqu'au démarrage de jupyter lab ~
[Docker] Comment accéder à l'hôte depuis l'intérieur du conteneur. http: //host.docker.internal: