[Challenge Docker from 0] Présentation et conditions de Docker

Contexte

Je vise à obtenir un emploi dans une entreprise développée en interne par des personnes inexpérimentées. J'ai décidé d'étudier Docker pour créer un bon portfolio.

Le niveau de connaissance est un niveau qui peut être facilement développé à l'aide de Ruby on rails, de la gestion de version à l'aide de git et déployable à l'aide de heroku. De plus, je n'ai pas fait beaucoup d'études liées à Linux ou au réseau nécessaires pour apprendre Docker. J'espère que cela aidera ceux qui envisagent d'essayer Docker à l'avenir au même niveau que leur propre mémorandum.

buts finaux

-Il sera possible de créer un environnement Ruby on Rails à partir de zéro en utilisant Docker. ・ Pour pouvoir migrer des applications existantes vers l'environnement Docker

À propos de la présentation et de la terminologie de Docker

Qu'est-ce que Docker?

Par définition, il s'agit d'une «plate-forme pour créer, distribuer et exécuter des environnements virtuels de type conteneur». Pour être honnête, même si cette explication est donnée aux débutants, cela ne me vient pas à l'esprit, donc à ma manière,

** "Lancer un PC conçu pour l'environnement afin qu'il puisse être utilisé à divers endroits" **

est. Peut-être que quiconque écrit une application simple dans Rails a rencontré diverses erreurs. Je pense que le plus gênant est celui des erreurs environnementales (personnellement). De plus, dans certains cas, je pense qu'il y avait quelque chose comme "Cela fonctionne bien dans l'environnement de développement, mais cela ne fonctionne pas dans l'environnement de production !!". Comme vous pouvez l'imaginer sans expérience, dans le domaine réel, davantage de bibliothèques et d'outils sont intimement liés, et vous devez exécuter l'application dans divers environnements tels que la production et le développement. De plus, le même système d'exploitation, périphérique, serveur, etc. n'est pas toujours préparé, et il est nécessaire de définir l'environnement individuellement pour chacun. Compte tenu de ceux-ci, il est facile d'imaginer que la mise en place de l'environnement et la prise en charge de l'environnement sont extrêmement difficiles.

Dans un tel cas, ce serait très facile si nous pouvions lancer différents paramètres d'environnement et dépendances de bibliothèque pour chaque PC afin qu'ils puissent être repris dans n'importe quel environnement. Docker a rendu cela possible grâce à la technologie virtuelle. On dit que Docker est une technologie de conteneur, mais c'est comme mettre l'ensemble des paramètres de l'environnement du PC dans une boîte appelée conteneur.

Avantages de Docker

L'utilisation de Docker présente quatre avantages principaux. ・ Il n'y a pas de différence entre les environnements ・ Puisque l'environnement est écrit en code, il est facile à comprendre même après. ・ Facile à créer un environnement ・ Facile à abandonner l'environnement ・ Mouvement léger

J'ai senti que le mérite ci-dessus était facile à comprendre si je comprenais le mécanisme et l'utilisation de la technologie Docker.

Fonctionnement et mécanisme de Docker

Flux lors de l'utilisation de Docker

Il y a quatre étapes lorsque vous travaillez avec des conteneurs dans Docker.

Expliquant à partir de ①, Dockerfile est simplement un texte qui décrit les paramètres de l'environnement et les actions que vous souhaitez effectuer dans l'environnement. Par exemple, décrivez la version de l'outil à utiliser. Ce qui est généré à partir de ce fichier est l'image Docker de ②. Une image Docker est simplement comme un dessin de conception. Ensuite, créez un conteneur (entité) basé sur l'image (dessin de conception) de ②. Pour ceux qui ont étudié le rubis, il peut être plus facile de comprendre la relation entre la classe et l'instance pour ② et ③. Exécutez ensuite le conteneur et supprimez-le lorsque vous n'en avez plus besoin.

Comme mentionné ci-dessus, la force de Docker est que vous pouvez facilement créer une image Docker (dessin de conception) en décrivant les paramètres d'environnement sous forme de phrases dans un Dockerfile (fichier texte). En cas de changement, vous pouvez modifier la description du Dockerfile et créer et partager l'image Docker pour réaliser la même opération dans n'importe quel environnement.

Comment fonctionne Docker

Vous avez peut-être compris la force de Docker, mais "N'est-il pas acceptable de créer un environnement virtuel sur un PC dans tous les environnements de développement à l'aide de virtualBOX, puis d'y installer le même système d'exploitation?" Certains peuvent penser (je suis peut-être le seul). Mais une autre force de Docker est sa légèreté. Dans un environnement virtuel normal, il est nécessaire de tout construire, comme le système d'exploitation virtuel et le processeur virtuel sur le système d'exploitation hôte. D'autre part, Docker est la même technologie virtuelle, mais elle fonctionne en utilisant la puissance du noyau sur le système d'exploitation hôte, il n'est donc pas nécessaire de créer un environnement virtuel à partir de zéro. Par conséquent, le fonctionnement de Docker est très léger.

Glossaire Docker

Docker a diverses fonctions et des noms uniques. Je voudrais résumer les mots que je verrai probablement à l’avenir dans mes propres mots.

Conteneur Docker

C'est une boîte qui contient le système d'exploitation et les bibliothèques. Vous pouvez y mettre des paramètres d'environnement et exécuter diverses applications. Par exemple, vous pouvez créer une application de rails par-dessus en créant une boîte contenant les bibliothèques macOS et rails. Vous pouvez transmettre la boîte entière lors de la migration vers un autre environnement, de sorte que vous pouvez facilement migrer non seulement le code des rails, mais également les préférences sous-jacentes.

Image Docker

Il s'agit d'un dessin de conception du conteneur Docker. Un conteneur Docker est créé à partir de l'image Docker. Identique à la relation entre classe et instance dans la programmation orientée objet. L'image Docker est une classe (pas de réalité, quelque chose comme une définition) et le conteneur Docker est une instance (l'endroit où cela fonctionne réellement).

Docker file Il s'agit d'un fichier pour créer une image Docker. Écrivez les informations ici pour définir l'image. Écrivez ce fichier et compilez (entrez la commande build) pour créer une image Docker. Docker peut facilement modifier le conteneur et créer une image originale car les paramètres d'environnement sont écrits en caractères dans ce Dockerfile.

Docker hub Un site avec de nombreuses images Docker. C'est comme la version Docker de Gitgub. Vous pouvez créer diverses images Docker sur votre propre PC et télécharger vos propres images Docker. L'image publiée sur le Dockerhub peut être visualisée par d'autres personnes, vous pouvez donc facilement partager l'image Docker d'origine.

Docker machine Un environnement qui vous permet d'exécuter un conteneur Docker n'importe où. Avec Docker maxhine, vous pouvez utiliser des conteneurs Docker sur votre PC local ou dans le cloud.

Docker compose Pour faire fonctionner plusieurs conteneurs. Puisqu'un conteneur ressemble à un conteneur et à une fonction, il est nécessaire de préparer plusieurs conteneurs pour les bases de données et les serveurs Web lors de la gestion des applications avec des conteneurs. Docker compose facilite ensuite la gestion de plusieurs conteneurs.

Docker Demon Le cœur de la technologie des conteneurs. C'est à ce démon de démarrer et de commander le conteneur.

Résumé / impression

Si vous n'étiez qu'une introduction à la programmation, il a fallu du temps pour comprendre ce qu'était Docker et à quoi il servait. De plus, comme il existe peu de livres d'introduction, il semble un peu difficile de se lancer. Cependant, lorsque je l'ai reconstitué, j'ai le sentiment d'avoir pu organiser Docker.

[Articles à partir de la prochaine fois] [Challenge Docker from 0] Créer un environnement de développement pour Ruby on Rails / MYSQL à l'aide de Docker et Docker-compose (part1) [[Challenge Docker from 0] Créer un environnement de développement pour Ruby on Rails / MYSQL à l'aide de Docker et Docker-compose (part2)] (https://qiita.com/shu1124/items/5399ef69f940e5e19d59) [Challenge Docker from 0] Créez un environnement de développement pour nginx, puma, rails6.0 et mysql à l'aide de Docker

Matériel pédagogique / articles utiles

"Je viens de démarrer Docker, donc je l'ai résumé d'une manière facile à comprendre." https://qiita.com/gold-kou/items/44860fbda1a34a001fc1 → Il couvre très finement. Je le vois souvent comme une référence.

"Cours Docker enseigné par des développeurs IA américains à partir de zéro" https://www.udemy.com/course/aidocker/ → Si un débutant apprend Docker, c'est ça! !! !! Incroyablement facile à comprendre! !! !! Il couvre la construction de l'environnement avec Docker à partir des bases de Linux.

"Introduction au développement pratique de conteneurs pour Docker / Kubernetes - Akinori Yamada" → Livres pratiques, cela peut être un peu difficile pour les débutants.

"Apprenez les bases en une seule journée! Docker / Kubernetes Super Introduction - Auteur" → Si un débutant veut apprendre des livres, il est facile de commencer.

Recommended Posts

[Challenge Docker from 0] Présentation et conditions de Docker
Défi pour installer WSL2 et docker
Résiliation de Docker et Kubernetes: période de grâce de SIGTERM à SIGKILL
[Challenge CircleCI from 0] Apprenez les bases de CircleCI
Introduction de Docker Hub et des commandes Auto-apprentissage ①
En savoir plus sur l'image du docker et le FROM du Dockerfile
Installation simple de nginx et Docker à l'aide d'ansible
[Java] Présentation de Java
Résumé des commandes fréquemment utilisées dans Rails et Docker
ArrayList et le rôle de l'interface vu depuis List
Volume 3 types de Docker Compose considérés à partir de l'objectif
Vérification de la relation entre l'image Docker et le conteneur
Introduction de Docker - Partie 1--
Installation et initialisation de Docker
[Termes] Statique et dynamique
Présentation de Spring AOP
[Résumé des livres techniques] Résumé de la lecture "Apprendre Docker à partir des bases"
Localisation japonaise du conteneur Docker de CentOS7 / CentOS8 et réglage de l'heure japonaise