
Apprenez le développement et l'exploitation des conteneurs Docker/Kubernetes depuis le début.
Description
Introduction au livre
Guide complet de la technologie de conteneurs Docker/Kubernetes pour le développement et l'exploitation d'applications pratiques
Il s'agit d'un ouvrage d'introduction pratique qui résume les principes fondamentaux de la technologie des conteneurs utilisant Docker et Kubernetes.
Il est structuré de manière à ce que vous puissiez apprendre étape par étape, en commençant par le concept de la technologie de virtualisation des conteneurs, le déploiement d'applications basées sur Docker et la création d'images, la configuration réseau et le système d'orchestration Kubernetes.
Entièrement révisé et augmenté depuis sa première édition, cet ouvrage reflète les dernières évolutions de l'écosystème. Fort de la vaste expérience de l'auteur en développement de conteneurs et riche d'études de cas pratiques, il s'adresse aussi bien aux débutants qu'aux utilisateurs intermédiaires.
Il s'agit d'un ouvrage d'introduction pratique qui résume les principes fondamentaux de la technologie des conteneurs utilisant Docker et Kubernetes.
Il est structuré de manière à ce que vous puissiez apprendre étape par étape, en commençant par le concept de la technologie de virtualisation des conteneurs, le déploiement d'applications basées sur Docker et la création d'images, la configuration réseau et le système d'orchestration Kubernetes.
Entièrement révisé et augmenté depuis sa première édition, cet ouvrage reflète les dernières évolutions de l'écosystème. Fort de la vaste expérience de l'auteur en développement de conteneurs et riche d'études de cas pratiques, il s'adresse aussi bien aux débutants qu'aux utilisateurs intermédiaires.
- Vous pouvez consulter un aperçu du contenu du livre.
Aperçu
indice
Préface du traducteur xiii
Revue du lecteur bêta xiv
Début XVI
Remerciements xviii
CHAPITRE 1 Principes de base des conteneurs et de Docker 1
1.1 Qu'est-ce qu'un contenant ? 1
__1.1.1 Virtualisation conteneurisée 2
__1.1.2 Cas d'utilisation du conteneur 3
5 inconvénients des conteneurs à colonne
1.2 Qu'est-ce que Docker ? 5
1.2.1 Historique de Docker et de Docker, Inc. 6
__1.2.2 Docker 7 axé sur le déploiement d'applications
__1.2.3 Accès Docker 8
COLONNE Projet Moby 11
1.3 Pourquoi utiliser des contenants ? 11
1.3.1 Garantir la reproductibilité grâce à des applications et des environnements d'exécution immuables 12
COLONNE Cloud IaC et infrastructure immuable 15
COLONNE Technologie des conteneurs et plateformes sans serveur 16
__1.3.2 Facilité de gestion de la configuration des applications 16
1.3.3 Grande portabilité quel que soit l'environnement 18
__1.3.4 Efficacité du développement basé sur les conteneurs 20
1.4 Création d'un environnement d'exécution de conteneurs local 20
__1.4.1 Installation de Docker Desktop 21
Architecture de bras de colonne 24
__1.4.2 Configuration de Docker Desktop 25
__1.4.3 Dépannage de Docker Desktop 30
COLONNE Installation de l'environnement Linux 32
COLONNE Plan d'abonnement Docker 32
CHAPITRE 2 DÉPLOIEMENT DES CONTENEURS 33
2.1 Exécution d'applications dans des conteneurs 33
__2.1.1 Images de conteneurs et notions de base sur les conteneurs 34
2.2 Création d'une application simple et d'une image conteneur 37
__2.2.1 Instructions Dockerfile 39
Écrasez 40 lors de l'exécution de COLUMN CMD
Apprenez à exécuter des commandes avec COLUMN ENTRYPOINT 42
COLONNE Autres instructions dans le Dockerfile 44
Méthode de spécification 45 de la colonne CMD
__2.2.2 Exécution d'un conteneur 45
COLONNE Commandes Docker courtes 46
2.3 Gestion des images 48
__2.3.1 Construction d'une image Docker ― Construction de l'image 50
__2.3.2 Recherche Docker ― Recherche d'images 54
__2.3.3 docker image pull ― Récupération d'une image 56
__2.3.4 docker image ls ― Liste des images 57
__2.3.5 étiquette d'image Docker ― Étiquette d'image 57
__2.3.6 Connexion Docker ― Connexion au registre de conteneurs 60
__2.3.7 docker image push ― Version de l'image 64
Publication d'images de conteneurs dans le cadre de la GHCR 67
2.4 Manutention des conteneurs 67
__2.4.1 Cycle de vie du conteneur 68
__2.4.2 Exécution d'un conteneur Docker — Création et exécution d'un conteneur 69
71 options fréquemment utilisées lors de l'exécution de la commande COLUMN
__2.4.3 docker container ls ― liste des conteneurs 72
__2.4.4 docker container stop ― Arrêter le conteneur 74
__2.4.5 docker container rm ― Destruction d'un conteneur 74
__2.4.6 Journaux du conteneur Docker ― Vérification des journaux (sortie de flux standard) 76
__2.4.7 docker container exec ― Exécuter une commande dans un conteneur en cours d'exécution 77
__2.4.8 conteneur docker cp ― copier le fichier 78
2.5 Commandes pour la gestion des opérations 79
__2.5.1 élagage ― destruction 79
__2.5.2 Statistiques des conteneurs Docker ― Obtenir l'état d'utilisation 80
2.6 Docker Compose 81
__2.6.1 Exécution d'un conteneur unique avec Docker Compose 81
__2.6.2 Exécution de plusieurs conteneurs avec Compose 84
CHAPITRE 3 Construction et déploiement de conteneurs pratiques 93
3.1 Configuration des applications et des conteneurs 93
3.1.1 Un conteneur = un processus ? 95
3.1.2 Un problème par conteneur 98
3.2 Portabilité du conteneur 100
3.2.1 Différences avec le noyau et l'architecture 100
Conteneurs COLUMN : notions de base sous Windows
3.2.2 Bibliothèque, Liaison dynamique 101
3.3 Applications compatibles avec les conteneurs 102
__3.3.1 Création d'une image incluant un fichier de configuration 103
__3.3.2 Utilisation de fichiers de configuration en dehors du conteneur 103
CHRONIQUE Il ne s'agit pas seulement de produits adaptés aux contenants.
107
3.4 Comment gérer les informations de sécurité 107
3.4.1 Conteneur 107 Réception des informations de sécurité
3.4.2 Difficultés de gestion des systèmes de contrôle de version et des informations de sécurité 108
3.4.3 Gestion des informations de sécurité à l'aide de secrets 109
CHRONIQUE Attaques de la chaîne d'approvisionnement logicielle 111
3.4.4 Il n'existe pas de solution parfaite 111
3.5 Comment utiliser les données persistantes 112
__3.5.1 Volume de données 112
__3.5.2 Conteneur de volume de données 114
CHAPITRE 4 Création d'applications utilisant plusieurs conteneurs 119
4.1 Configuration des applications Web 119
__4.1.1 Spécifications d'application 120
__4.1.2 Architecture 120
4.2 Création de MySQL 123
4.2.1 Création d'un mot de passe pour un utilisateur se connectant à MySQL 124
__4.2.2 Configuration de conteneurs MySQL supplémentaires 125
__4.2.3 Dockerfile MySQL 126
__4.2.4 Configuration du conteneur MySQL 126
4.3 Création du migreur de base de données 128
__4.3.1 Migration d'une base de données avec golang-migrate 128
__4.3.2 Script d'exécution de la migration 131
__4.3.3 Fichier Docker du migrateur de base de données 132
COLONNE .dockerignore fichier 134
__4.3.4 Configuration du conteneur de migration de base de données 134
4.4 Création d'un serveur API et d'un serveur Web 139
__4.4.1 Configuration du répertoire du référentiel 140
COLONNE Polyrepo et Monorepo 142
__4.4.2 Détails du fichier exécutable et de la commande 142
4.4.3 Création d'un serveur API 144
__4.4.4 Création d'un serveur Web 151
4.5 Création d'un proxy inverse 158
__4.5.1 Structure du modèle du conteneur nginx 159
COLONNE kit d'entrée 163
__4.5.2 Dockerfile 163
4.6 Exécution d'une application de gestion des tâches par la configuration de plusieurs conteneurs 164
__4.6.1 compose.yaml 164
__4.6.2 Exécution de l'application de gestion des tâches 170
4.7 Amélioration de l'expérience de développement avec plusieurs configurations de conteneurs grâce à Tilt 171
__4.7.1 Exécution de l'inclinaison 171
4.7.2 Les puissantes fonctionnalités de Tilt 172
4.8 Principes de base de l'orchestration de conteneurs 176
CHAPITRE 5 : Introduction à Kubernetes 177
5.1 Qu'est-ce que Kubernetes ? 178
__5.1.1 L'essor de Docker et la naissance de Kubernetes 178
__5.1.2 Kubernetes Phase 179
5.2 Exécution de Kubernetes en local 181
__5.2.1 Création d'un environnement Kubernetes local dans Docker Desktop 181
COLONNE Autres outils de construction Kubernetes 187
5.3 Vue d'ensemble de Kubernetes 187
5.4 Cluster Kubernetes et nœud 188
Composants de gestion des colonnes qui constituent le plan de contrôle 190
5.5 Espaces de noms 191
5.6 Pad 192
__5.6.1 Création et déploiement de pods 193
__5.6.2 Manipulation des coussinets 195
COLONNE Adresse du pod et du conteneur à l'intérieur du pod 197
5.7 ReplicaSet 197
5.8 Déploiement 199
__5.8.1 Cycle de vie d'un ReplicaSet 202
__5.8.2 Exécution d'une restauration 204
5.9 Service 205
__5.9.1 Routage du trafic à l'aide de sélecteurs d'étiquettes 208
Analyse du nom du service COLUMN 211
__5.9.2 Service ClusterIP 211
__5.9.3 Service sans interface graphique 211
__5.9.4 Service NodePort 213
__5.9.5 Service d'équilibrage de charge 214
__5.9.6 Service de nom externe 214
5.10 Entrée 215
__5.10.1 Contrôleur d'entrée et classe d'entrée 215
__5.10.2 Accès via Ingress 216
COLONNE Comment spécifier les types et les noms de ressources avec kubectl 221
Détection des mises à jour des fichiers manifestes avec COLUMN Tilt et mise à jour automatique des ressources 222
COLONNE kk9s 223
COLONNE API Kubernetes 224
CHAPITRE 6 : Déploiement de Kubernetes et création d’un cluster 226
6.1 Configuration de l'application de gestion des tâches 226
6.1.1 Ressources Kubernetes : Configuration de l’application de gestion des tâches 227
6.2 Déploiement de l'application de gestion des tâches sur Kubernetes 227
__6.2.1 Espace de noms 228
__6.2.2 Secret 228
__6.2.3 Distribution MySQL 232
COLONNE ServiceName de StatefulSet 237
__6.2.4 Déploiement du migreur de base de données 238
__6.2.5 Déploiement du serveur API 241
__6.2.6 Déploiement du serveur Web 245
6.3 Publication d'applications Kubernetes en ligne 251
6.3.1 Déploiement d'Azure Kubernetes Service 251
COLONNE Publication de votre application avec votre propre domaine et HTTPS 257
COLONNE kubectx 259
CHAPITRE 7 Exploiter Kubernetes 260
7.1 Stratégie de déploiement des modules 260
__7.1.1 Mise à jour progressive 261
Commande kubectl patch pour mettre à jour une partie de la ressource COLUMN 266
__7.1.2 Configuration des contrôles d'état lors de l'exécution des conteneurs 268
COLONNE Arrêt sécurisé des applications et suppression des modules 271
__7.1.3 Déploiement bleu-vert 272
COLONNE 277 Produits qui implémentent un maillage de services
7.2 Exécution de tâches par lots régulières dans Kubernetes 278
__7.2.1 Tâche Cron 278
7.2.2 Exécution des tâches cron en tenant compte des fuseaux horaires 284
__7.2.3 Exécution d'une tâche ponctuelle à partir d'une tâche cron 284
7.3 Gestion des utilisateurs et contrôle d'accès basé sur les rôles (RBAC) 285
7.3.1 Mise en œuvre du contrôle des permissions à l'aide de RBAC 286
__7.3.2 Création d'un rôle de cluster 288
__7.3.3 Création d'un compte de service 290
__7.3.4 Création d'une liaison de rôle de cluster 291
__7.3.5 Utilisateur général 294
CHAPITRE 8 : Packaging des applications Kubernetes 299
8.1 Kustomize 300
8.1.1 Utilisation de base 301
COLONNE Non recommandé Étiquettes courantes 309
8.1.2 Réutilisation et superpositions partielles 310
8.1.3 Gestion des secrets dans Kustomize 315
8.1.4 Génération d'un manifeste sur le réseau 321
8.2 Casque 323
__8.2.1 Installation de Helm 324
8.2.2 Cartes et référentiels Helm 325
__8.2.3 Installation du graphique 328
8.2.4 Création de votre propre graphique 332
COLONNE Étiquettes recommandées pour Kubernetes 347
8.2.5 Enregistrement d'un graphique dans le registre 347
COLONNE Connexion des paquets et des dépôts GHCR 351
COLONNE Initiative Open Container (OCI) 353
CHAPITRE 9 OPÉRATIONS RELATIVES AUX CONTENEURS 354
9.1 Opération de journalisation 354
__9.1.1 Journal du conteneur 354
__9.1.2 Opérations de journalisation des conteneurs 358
__9.1.3 Création d'une configuration de collecte et de gestion des journaux à l'aide d'Elastic Stack 360
COLONNE Choisir une instance stable d'Elasticsearch 384
Gestion des journaux propre à COLUMN Cloud 385
__9.1.4 poupe 385
9.2 Opérations Kubernetes à haute disponibilité 387
__9.2.1 Comportement de Kubernetes lors d'une défaillance de nœud 387
__9.2.2 Stratégie de déploiement de pods résiliente aux pannes avec anti-affinité de pod 388
__9.2.3 Séparation des pods gourmands en ressources CPU avec l'affinité de nœud 394
__9.2.4 Mise à l'échelle automatique des pods à l'aide de l'autoscaler horizontal de pods 399
__9.2.5 Mise à l'échelle automatique des nœuds à l'aide de Cluster Autoscaler 401
COLONNE 402 : Une structure pour l’exploitation légère des clusters et des nœuds Kubernetes
CHAPITRE 10 Création et exploitation d'images de conteneurs optimales 403
10.1 Quelle est l'image de conteneur optimale pour le fonctionnement ? 403
__10.1.1 Problèmes causés par l'augmentation de la taille de l'image 404
10.2 Image de base légère 404
__10.2.1 rayure 405
__10.2.2 BusyBox 411
__10.2.3 Alpine Linux 415
COLONNE 417 Faut-il utiliser l'image de base Alpine Linux ?
__10.2.4 Distroless 418
10.3 Création d'une image conteneur légère 423
__10.3.1 Réduction de la taille de votre application déployée 423
10.3.2 Prendre en compte la structure en couches des images conteneurs 424
10.4 Constructions multi-étapes 428
__10.4.1 Séparation des conteneurs de construction et des conteneurs d'exécution 429
COLONNE Utilisation d'une image externe comme scène 432
10.5 BuildKit 433
__10.5.1 Qu'est-ce que BuildKit ? 433
__10.5.2 Prise en charge multiplateforme des conteneurs 433
__10.5.3 Création d'images multiplateformes avec BuildKit 435
COLONNE QEMU 436
CHRONIQUE : Jusqu'où doivent aller les images multiplateformes ? 441
10.6 Utilisation et création d'images de conteneurs sécurisées 441
__10.6.1 Configuration minimale des images de conteneur 442
__10.6.2 Évitez l'exécution en mode privilégié 442
__10.6.3 Évitez d'exécuter en tant qu'utilisateur root 442
__10.6.4 Utilisation d'images et d'outils de conteneurs de confiance 446
__10.6.5 Vérification des vulnérabilités des images de conteneurs avec Trivy 448
10.7 Création d'images de conteneurs avec les outils CI 451
__10.7.1 Actions GitHub 452
__10.7.2 Création d'un dépôt à partir d'un modèle 453
__10.7.3 Paramètres de flux de travail 455
__10.7.4 Exécution du flux de travail 460
Éviter la balise image la plus récente dans les opérations COLUMN 464
CHAPITRE 11 Livraison continue de conteneurs 465
11.1 Qu'est-ce que la livraison continue ? 465
__11.1.1 Problèmes causés par des processus de déploiement non optimisés 465
11.1.2 L'importance de la livraison de logiciels et la distinction CI/CD 466
__11.1.3 Livraison continue avec GitOps 467
11.2 Flux 469
__11.2.1 Installation de Flux 469
__11.2.2 Déploiement d'applications 470
11.3 Argo CD 475
__11.3.1 Installation du CD Argo 475
__11.3.2 Déploiement d'application 478
11.4 PipeCD 484
__11.4.1 Fonctionnalités de PipeCD 484
__11.4.2 Création d'un environnement de démarrage rapide 485
__11.4.3 Déploiement d'applications 489
COLONNE Pourquoi construire un plan de contrôle et le raccorder séparément dans PipeCD 493
11.5 Automatisation complète de la livraison de logiciels 495
__11.5.1 Mise à jour automatique des balises d'image de conteneur définies dans le manifeste 495
COLONNE 507 : Intégrer un processus d’approbation dans GitOps
CHAPITRE 12 : Divers usages des contenants 508
12.1 Unification et partage des environnements de développement dans le cadre du développement en équipe 508
__12.1.1 Unification des logiciels et outils que vous utilisez 508
__12.1.2 Environnement de développement et intelligence collective 510
Les conteneurs COLUMN peuvent-ils remplacer Vagrant ? 511
12.2 Utilisation des outils en ligne de commande dans les conteneurs 512
__12.2.1 Exécution de Trivy dans un conteneur 512
__12.2.2 Exécution d'un script shell dans un conteneur 515
12.3 Tests de charge 517
__12.3.1 Aperçu des criquets 517
__12.3.2 Tests de charge des applications dans Kubernetes 518
Exécution de tests de charge sur la colonne k6 526
ANNEXE A : Configuration des outils de développement 528
A.1 WSL2 528
__A.1.1 Conditions WSL2 529
__A.1.2 Installation de WSL2 529
__A.1.3 Distributions disponibles pour WSL2 530
__A.1.4 effectuer l'installation 531
COLONNE Établir un style de développement avec WSL2 532
A.2 asdf 532
__A.2.1 Qu'est-ce que asdf ? 533
__A.2.2 asdf installation 533
__A.2.3 Installation de l'outil 534
__A.2.4 Définir la version utilisée 534
A.3 type 535
__A.3.1 type installation 536
__A.3.2 Création d'un cluster Kubernetes multi-nœuds dans votre environnement local 536
COLONNE Docker dans Docker / Conteneur dans Conteneur 538
A.4 Rancher Desktop 538
ANNEXE B Environnements d'orchestration de conteneurs divers 542
B.1 Moteur Kubernetes de Google 542
__B.1.1 Préparation de la construction d'un cluster GKE 543
__B.1.2 Création d'un cluster GKE 545
B.2 Amazon Elastic Kubernetes Service 548
__B.2.1 Préparation de la construction d'un cluster EKS 548
__B.2.2 Création d'un cluster EKS à l'aide de eksctl 550
COLONNE EKS sur Fargate 555
B.3 Azure Kubernetes Service 556
__B.3.1 Préparation de la construction d'un cluster AKS 557
__B.3.2 Création d'un cluster AKS 559
__B.3.3 Opérations du cluster AKS 560
B.4 Création d'un cluster Kubernetes dans un environnement sur site 561
__B.4.1 Préparation de la construction d'un cluster sur site 561
__B.4.2 Création d'un cluster EKS à l'aide de Kubespray 563
B.5 Amazon Elastic Container Service 566
__B.5.1 Création d'un cluster ECS et définition des déploiements de conteneurs avec CDK 567
__B.5.2 Création d'un cluster ECS et déploiement de conteneurs avec CDK 569
COLONNE Amazon ECS Anywhere 571
ANNEXE C Conseils sur le développement et l'exploitation des conteneurs 572
C.1 Environnement d'exécution du conteneur 572
__C.1.1 conteneur 573
CHRONIQUE La dépréciation de Docker dans Kubernetes : le tumulte 574
C.1.2 nerdctl 574
C.2 Conseil Kubernetes 575
__C.2.1 Débogage des pods existants via des conteneurs éphémères 575
__C.2.2 Renforcement de la sécurité à l'aide de l'admission de sécurité du pod 578
COLONNE Agent de police ouvert 581
C.3 Conseils de développement et de déploiement de conteneurs 581
__C.3.1 Mise à jour automatique des conteneurs avec Compose Watch 581
__C.3.2 Gestion des applications Kubernetes avec Tilt 583
C.4 Amélioration de l'efficacité du développement de conteneurs grâce à l'IA générative 585
__C.4.1 Utilisation de ChatGPT 586
__C.4.2 Utilisation de GitHub Copilot 587
Gestionnaire de paquets C.5 Alpine Linux apk 589
__C.5.1 Manipulation du gestionnaire de packages APK 589
__C.5.2 package alpine-sdk 592
Référence 593
Recherche 595
Revue du lecteur bêta xiv
Début XVI
Remerciements xviii
CHAPITRE 1 Principes de base des conteneurs et de Docker 1
1.1 Qu'est-ce qu'un contenant ? 1
__1.1.1 Virtualisation conteneurisée 2
__1.1.2 Cas d'utilisation du conteneur 3
5 inconvénients des conteneurs à colonne
1.2 Qu'est-ce que Docker ? 5
1.2.1 Historique de Docker et de Docker, Inc. 6
__1.2.2 Docker 7 axé sur le déploiement d'applications
__1.2.3 Accès Docker 8
COLONNE Projet Moby 11
1.3 Pourquoi utiliser des contenants ? 11
1.3.1 Garantir la reproductibilité grâce à des applications et des environnements d'exécution immuables 12
COLONNE Cloud IaC et infrastructure immuable 15
COLONNE Technologie des conteneurs et plateformes sans serveur 16
__1.3.2 Facilité de gestion de la configuration des applications 16
1.3.3 Grande portabilité quel que soit l'environnement 18
__1.3.4 Efficacité du développement basé sur les conteneurs 20
1.4 Création d'un environnement d'exécution de conteneurs local 20
__1.4.1 Installation de Docker Desktop 21
Architecture de bras de colonne 24
__1.4.2 Configuration de Docker Desktop 25
__1.4.3 Dépannage de Docker Desktop 30
COLONNE Installation de l'environnement Linux 32
COLONNE Plan d'abonnement Docker 32
CHAPITRE 2 DÉPLOIEMENT DES CONTENEURS 33
2.1 Exécution d'applications dans des conteneurs 33
__2.1.1 Images de conteneurs et notions de base sur les conteneurs 34
2.2 Création d'une application simple et d'une image conteneur 37
__2.2.1 Instructions Dockerfile 39
Écrasez 40 lors de l'exécution de COLUMN CMD
Apprenez à exécuter des commandes avec COLUMN ENTRYPOINT 42
COLONNE Autres instructions dans le Dockerfile 44
Méthode de spécification 45 de la colonne CMD
__2.2.2 Exécution d'un conteneur 45
COLONNE Commandes Docker courtes 46
2.3 Gestion des images 48
__2.3.1 Construction d'une image Docker ― Construction de l'image 50
__2.3.2 Recherche Docker ― Recherche d'images 54
__2.3.3 docker image pull ― Récupération d'une image 56
__2.3.4 docker image ls ― Liste des images 57
__2.3.5 étiquette d'image Docker ― Étiquette d'image 57
__2.3.6 Connexion Docker ― Connexion au registre de conteneurs 60
__2.3.7 docker image push ― Version de l'image 64
Publication d'images de conteneurs dans le cadre de la GHCR 67
2.4 Manutention des conteneurs 67
__2.4.1 Cycle de vie du conteneur 68
__2.4.2 Exécution d'un conteneur Docker — Création et exécution d'un conteneur 69
71 options fréquemment utilisées lors de l'exécution de la commande COLUMN
__2.4.3 docker container ls ― liste des conteneurs 72
__2.4.4 docker container stop ― Arrêter le conteneur 74
__2.4.5 docker container rm ― Destruction d'un conteneur 74
__2.4.6 Journaux du conteneur Docker ― Vérification des journaux (sortie de flux standard) 76
__2.4.7 docker container exec ― Exécuter une commande dans un conteneur en cours d'exécution 77
__2.4.8 conteneur docker cp ― copier le fichier 78
2.5 Commandes pour la gestion des opérations 79
__2.5.1 élagage ― destruction 79
__2.5.2 Statistiques des conteneurs Docker ― Obtenir l'état d'utilisation 80
2.6 Docker Compose 81
__2.6.1 Exécution d'un conteneur unique avec Docker Compose 81
__2.6.2 Exécution de plusieurs conteneurs avec Compose 84
CHAPITRE 3 Construction et déploiement de conteneurs pratiques 93
3.1 Configuration des applications et des conteneurs 93
3.1.1 Un conteneur = un processus ? 95
3.1.2 Un problème par conteneur 98
3.2 Portabilité du conteneur 100
3.2.1 Différences avec le noyau et l'architecture 100
Conteneurs COLUMN : notions de base sous Windows
3.2.2 Bibliothèque, Liaison dynamique 101
3.3 Applications compatibles avec les conteneurs 102
__3.3.1 Création d'une image incluant un fichier de configuration 103
__3.3.2 Utilisation de fichiers de configuration en dehors du conteneur 103
CHRONIQUE Il ne s'agit pas seulement de produits adaptés aux contenants.
107
3.4 Comment gérer les informations de sécurité 107
3.4.1 Conteneur 107 Réception des informations de sécurité
3.4.2 Difficultés de gestion des systèmes de contrôle de version et des informations de sécurité 108
3.4.3 Gestion des informations de sécurité à l'aide de secrets 109
CHRONIQUE Attaques de la chaîne d'approvisionnement logicielle 111
3.4.4 Il n'existe pas de solution parfaite 111
3.5 Comment utiliser les données persistantes 112
__3.5.1 Volume de données 112
__3.5.2 Conteneur de volume de données 114
CHAPITRE 4 Création d'applications utilisant plusieurs conteneurs 119
4.1 Configuration des applications Web 119
__4.1.1 Spécifications d'application 120
__4.1.2 Architecture 120
4.2 Création de MySQL 123
4.2.1 Création d'un mot de passe pour un utilisateur se connectant à MySQL 124
__4.2.2 Configuration de conteneurs MySQL supplémentaires 125
__4.2.3 Dockerfile MySQL 126
__4.2.4 Configuration du conteneur MySQL 126
4.3 Création du migreur de base de données 128
__4.3.1 Migration d'une base de données avec golang-migrate 128
__4.3.2 Script d'exécution de la migration 131
__4.3.3 Fichier Docker du migrateur de base de données 132
COLONNE .dockerignore fichier 134
__4.3.4 Configuration du conteneur de migration de base de données 134
4.4 Création d'un serveur API et d'un serveur Web 139
__4.4.1 Configuration du répertoire du référentiel 140
COLONNE Polyrepo et Monorepo 142
__4.4.2 Détails du fichier exécutable et de la commande 142
4.4.3 Création d'un serveur API 144
__4.4.4 Création d'un serveur Web 151
4.5 Création d'un proxy inverse 158
__4.5.1 Structure du modèle du conteneur nginx 159
COLONNE kit d'entrée 163
__4.5.2 Dockerfile 163
4.6 Exécution d'une application de gestion des tâches par la configuration de plusieurs conteneurs 164
__4.6.1 compose.yaml 164
__4.6.2 Exécution de l'application de gestion des tâches 170
4.7 Amélioration de l'expérience de développement avec plusieurs configurations de conteneurs grâce à Tilt 171
__4.7.1 Exécution de l'inclinaison 171
4.7.2 Les puissantes fonctionnalités de Tilt 172
4.8 Principes de base de l'orchestration de conteneurs 176
CHAPITRE 5 : Introduction à Kubernetes 177
5.1 Qu'est-ce que Kubernetes ? 178
__5.1.1 L'essor de Docker et la naissance de Kubernetes 178
__5.1.2 Kubernetes Phase 179
5.2 Exécution de Kubernetes en local 181
__5.2.1 Création d'un environnement Kubernetes local dans Docker Desktop 181
COLONNE Autres outils de construction Kubernetes 187
5.3 Vue d'ensemble de Kubernetes 187
5.4 Cluster Kubernetes et nœud 188
Composants de gestion des colonnes qui constituent le plan de contrôle 190
5.5 Espaces de noms 191
5.6 Pad 192
__5.6.1 Création et déploiement de pods 193
__5.6.2 Manipulation des coussinets 195
COLONNE Adresse du pod et du conteneur à l'intérieur du pod 197
5.7 ReplicaSet 197
5.8 Déploiement 199
__5.8.1 Cycle de vie d'un ReplicaSet 202
__5.8.2 Exécution d'une restauration 204
5.9 Service 205
__5.9.1 Routage du trafic à l'aide de sélecteurs d'étiquettes 208
Analyse du nom du service COLUMN 211
__5.9.2 Service ClusterIP 211
__5.9.3 Service sans interface graphique 211
__5.9.4 Service NodePort 213
__5.9.5 Service d'équilibrage de charge 214
__5.9.6 Service de nom externe 214
5.10 Entrée 215
__5.10.1 Contrôleur d'entrée et classe d'entrée 215
__5.10.2 Accès via Ingress 216
COLONNE Comment spécifier les types et les noms de ressources avec kubectl 221
Détection des mises à jour des fichiers manifestes avec COLUMN Tilt et mise à jour automatique des ressources 222
COLONNE kk9s 223
COLONNE API Kubernetes 224
CHAPITRE 6 : Déploiement de Kubernetes et création d’un cluster 226
6.1 Configuration de l'application de gestion des tâches 226
6.1.1 Ressources Kubernetes : Configuration de l’application de gestion des tâches 227
6.2 Déploiement de l'application de gestion des tâches sur Kubernetes 227
__6.2.1 Espace de noms 228
__6.2.2 Secret 228
__6.2.3 Distribution MySQL 232
COLONNE ServiceName de StatefulSet 237
__6.2.4 Déploiement du migreur de base de données 238
__6.2.5 Déploiement du serveur API 241
__6.2.6 Déploiement du serveur Web 245
6.3 Publication d'applications Kubernetes en ligne 251
6.3.1 Déploiement d'Azure Kubernetes Service 251
COLONNE Publication de votre application avec votre propre domaine et HTTPS 257
COLONNE kubectx 259
CHAPITRE 7 Exploiter Kubernetes 260
7.1 Stratégie de déploiement des modules 260
__7.1.1 Mise à jour progressive 261
Commande kubectl patch pour mettre à jour une partie de la ressource COLUMN 266
__7.1.2 Configuration des contrôles d'état lors de l'exécution des conteneurs 268
COLONNE Arrêt sécurisé des applications et suppression des modules 271
__7.1.3 Déploiement bleu-vert 272
COLONNE 277 Produits qui implémentent un maillage de services
7.2 Exécution de tâches par lots régulières dans Kubernetes 278
__7.2.1 Tâche Cron 278
7.2.2 Exécution des tâches cron en tenant compte des fuseaux horaires 284
__7.2.3 Exécution d'une tâche ponctuelle à partir d'une tâche cron 284
7.3 Gestion des utilisateurs et contrôle d'accès basé sur les rôles (RBAC) 285
7.3.1 Mise en œuvre du contrôle des permissions à l'aide de RBAC 286
__7.3.2 Création d'un rôle de cluster 288
__7.3.3 Création d'un compte de service 290
__7.3.4 Création d'une liaison de rôle de cluster 291
__7.3.5 Utilisateur général 294
CHAPITRE 8 : Packaging des applications Kubernetes 299
8.1 Kustomize 300
8.1.1 Utilisation de base 301
COLONNE Non recommandé Étiquettes courantes 309
8.1.2 Réutilisation et superpositions partielles 310
8.1.3 Gestion des secrets dans Kustomize 315
8.1.4 Génération d'un manifeste sur le réseau 321
8.2 Casque 323
__8.2.1 Installation de Helm 324
8.2.2 Cartes et référentiels Helm 325
__8.2.3 Installation du graphique 328
8.2.4 Création de votre propre graphique 332
COLONNE Étiquettes recommandées pour Kubernetes 347
8.2.5 Enregistrement d'un graphique dans le registre 347
COLONNE Connexion des paquets et des dépôts GHCR 351
COLONNE Initiative Open Container (OCI) 353
CHAPITRE 9 OPÉRATIONS RELATIVES AUX CONTENEURS 354
9.1 Opération de journalisation 354
__9.1.1 Journal du conteneur 354
__9.1.2 Opérations de journalisation des conteneurs 358
__9.1.3 Création d'une configuration de collecte et de gestion des journaux à l'aide d'Elastic Stack 360
COLONNE Choisir une instance stable d'Elasticsearch 384
Gestion des journaux propre à COLUMN Cloud 385
__9.1.4 poupe 385
9.2 Opérations Kubernetes à haute disponibilité 387
__9.2.1 Comportement de Kubernetes lors d'une défaillance de nœud 387
__9.2.2 Stratégie de déploiement de pods résiliente aux pannes avec anti-affinité de pod 388
__9.2.3 Séparation des pods gourmands en ressources CPU avec l'affinité de nœud 394
__9.2.4 Mise à l'échelle automatique des pods à l'aide de l'autoscaler horizontal de pods 399
__9.2.5 Mise à l'échelle automatique des nœuds à l'aide de Cluster Autoscaler 401
COLONNE 402 : Une structure pour l’exploitation légère des clusters et des nœuds Kubernetes
CHAPITRE 10 Création et exploitation d'images de conteneurs optimales 403
10.1 Quelle est l'image de conteneur optimale pour le fonctionnement ? 403
__10.1.1 Problèmes causés par l'augmentation de la taille de l'image 404
10.2 Image de base légère 404
__10.2.1 rayure 405
__10.2.2 BusyBox 411
__10.2.3 Alpine Linux 415
COLONNE 417 Faut-il utiliser l'image de base Alpine Linux ?
__10.2.4 Distroless 418
10.3 Création d'une image conteneur légère 423
__10.3.1 Réduction de la taille de votre application déployée 423
10.3.2 Prendre en compte la structure en couches des images conteneurs 424
10.4 Constructions multi-étapes 428
__10.4.1 Séparation des conteneurs de construction et des conteneurs d'exécution 429
COLONNE Utilisation d'une image externe comme scène 432
10.5 BuildKit 433
__10.5.1 Qu'est-ce que BuildKit ? 433
__10.5.2 Prise en charge multiplateforme des conteneurs 433
__10.5.3 Création d'images multiplateformes avec BuildKit 435
COLONNE QEMU 436
CHRONIQUE : Jusqu'où doivent aller les images multiplateformes ? 441
10.6 Utilisation et création d'images de conteneurs sécurisées 441
__10.6.1 Configuration minimale des images de conteneur 442
__10.6.2 Évitez l'exécution en mode privilégié 442
__10.6.3 Évitez d'exécuter en tant qu'utilisateur root 442
__10.6.4 Utilisation d'images et d'outils de conteneurs de confiance 446
__10.6.5 Vérification des vulnérabilités des images de conteneurs avec Trivy 448
10.7 Création d'images de conteneurs avec les outils CI 451
__10.7.1 Actions GitHub 452
__10.7.2 Création d'un dépôt à partir d'un modèle 453
__10.7.3 Paramètres de flux de travail 455
__10.7.4 Exécution du flux de travail 460
Éviter la balise image la plus récente dans les opérations COLUMN 464
CHAPITRE 11 Livraison continue de conteneurs 465
11.1 Qu'est-ce que la livraison continue ? 465
__11.1.1 Problèmes causés par des processus de déploiement non optimisés 465
11.1.2 L'importance de la livraison de logiciels et la distinction CI/CD 466
__11.1.3 Livraison continue avec GitOps 467
11.2 Flux 469
__11.2.1 Installation de Flux 469
__11.2.2 Déploiement d'applications 470
11.3 Argo CD 475
__11.3.1 Installation du CD Argo 475
__11.3.2 Déploiement d'application 478
11.4 PipeCD 484
__11.4.1 Fonctionnalités de PipeCD 484
__11.4.2 Création d'un environnement de démarrage rapide 485
__11.4.3 Déploiement d'applications 489
COLONNE Pourquoi construire un plan de contrôle et le raccorder séparément dans PipeCD 493
11.5 Automatisation complète de la livraison de logiciels 495
__11.5.1 Mise à jour automatique des balises d'image de conteneur définies dans le manifeste 495
COLONNE 507 : Intégrer un processus d’approbation dans GitOps
CHAPITRE 12 : Divers usages des contenants 508
12.1 Unification et partage des environnements de développement dans le cadre du développement en équipe 508
__12.1.1 Unification des logiciels et outils que vous utilisez 508
__12.1.2 Environnement de développement et intelligence collective 510
Les conteneurs COLUMN peuvent-ils remplacer Vagrant ? 511
12.2 Utilisation des outils en ligne de commande dans les conteneurs 512
__12.2.1 Exécution de Trivy dans un conteneur 512
__12.2.2 Exécution d'un script shell dans un conteneur 515
12.3 Tests de charge 517
__12.3.1 Aperçu des criquets 517
__12.3.2 Tests de charge des applications dans Kubernetes 518
Exécution de tests de charge sur la colonne k6 526
ANNEXE A : Configuration des outils de développement 528
A.1 WSL2 528
__A.1.1 Conditions WSL2 529
__A.1.2 Installation de WSL2 529
__A.1.3 Distributions disponibles pour WSL2 530
__A.1.4 effectuer l'installation 531
COLONNE Établir un style de développement avec WSL2 532
A.2 asdf 532
__A.2.1 Qu'est-ce que asdf ? 533
__A.2.2 asdf installation 533
__A.2.3 Installation de l'outil 534
__A.2.4 Définir la version utilisée 534
A.3 type 535
__A.3.1 type installation 536
__A.3.2 Création d'un cluster Kubernetes multi-nœuds dans votre environnement local 536
COLONNE Docker dans Docker / Conteneur dans Conteneur 538
A.4 Rancher Desktop 538
ANNEXE B Environnements d'orchestration de conteneurs divers 542
B.1 Moteur Kubernetes de Google 542
__B.1.1 Préparation de la construction d'un cluster GKE 543
__B.1.2 Création d'un cluster GKE 545
B.2 Amazon Elastic Kubernetes Service 548
__B.2.1 Préparation de la construction d'un cluster EKS 548
__B.2.2 Création d'un cluster EKS à l'aide de eksctl 550
COLONNE EKS sur Fargate 555
B.3 Azure Kubernetes Service 556
__B.3.1 Préparation de la construction d'un cluster AKS 557
__B.3.2 Création d'un cluster AKS 559
__B.3.3 Opérations du cluster AKS 560
B.4 Création d'un cluster Kubernetes dans un environnement sur site 561
__B.4.1 Préparation de la construction d'un cluster sur site 561
__B.4.2 Création d'un cluster EKS à l'aide de Kubespray 563
B.5 Amazon Elastic Container Service 566
__B.5.1 Création d'un cluster ECS et définition des déploiements de conteneurs avec CDK 567
__B.5.2 Création d'un cluster ECS et déploiement de conteneurs avec CDK 569
COLONNE Amazon ECS Anywhere 571
ANNEXE C Conseils sur le développement et l'exploitation des conteneurs 572
C.1 Environnement d'exécution du conteneur 572
__C.1.1 conteneur 573
CHRONIQUE La dépréciation de Docker dans Kubernetes : le tumulte 574
C.1.2 nerdctl 574
C.2 Conseil Kubernetes 575
__C.2.1 Débogage des pods existants via des conteneurs éphémères 575
__C.2.2 Renforcement de la sécurité à l'aide de l'admission de sécurité du pod 578
COLONNE Agent de police ouvert 581
C.3 Conseils de développement et de déploiement de conteneurs 581
__C.3.1 Mise à jour automatique des conteneurs avec Compose Watch 581
__C.3.2 Gestion des applications Kubernetes avec Tilt 583
C.4 Amélioration de l'efficacité du développement de conteneurs grâce à l'IA générative 585
__C.4.1 Utilisation de ChatGPT 586
__C.4.2 Utilisation de GitHub Copilot 587
Gestionnaire de paquets C.5 Alpine Linux apk 589
__C.5.1 Manipulation du gestionnaire de packages APK 589
__C.5.2 package alpine-sdk 592
Référence 593
Recherche 595
Image détaillée
.jpg)
Dans le livre
Prenons le développement d'applications web comme exemple.
Les conteneurs vous permettent de préparer rapidement des applications pour votre environnement de développement local et de les déployer telles quelles, quelle que soit la plateforme.
Étant donné que chaque conteneur utilise le même environnement d'exécution, les problèmes dépendant de cet environnement peuvent être minimisés.
De plus, les serveurs web tels qu'Apache ou nginx peuvent être installés dans des conteneurs sans étapes compliquées.
La gestion de la configuration système, y compris les intergiciels, est également définie dans le fichier de paramètres.
L'introduction des conteneurs peut à elle seule simplifier le développement et les opérations.
--- p.12
Au vu de ce que nous avons abordé jusqu'à présent, vous pourriez être tenté de convertir toutes vos structures en conteneurs, mais les conteneurs ne conviennent pas à tout.
Il existe également des domaines où l'utilisation de conteneurs, comme les bases de données, peut s'avérer difficile.
/ Récemment, des solutions de stockage de données gérées, à faible charge et à grande évolutivité, sont également proposées sur les plateformes cloud, ce qui permet de les utiliser de manière appropriée sans avoir à imposer l'utilisation de conteneurs.
Il est important de choisir la bonne fonction pour le bon endroit.
Les serveurs sans état, tels que les serveurs web ou les serveurs API, peuvent être conteneurisés sans y consacrer beaucoup de temps.
Compte tenu de son avantage en termes de grande portabilité, la technologie des conteneurs ne peut être efficace que si elle est introduite à la fois dans les environnements de développement et d'exploitation.
Il existe déjà de nombreux exemples de réussite, et les services gérés dans le cloud deviennent plus faciles à utiliser.
--- p.19
Les pods créés avec des Deployments et des ReplicaSets conviennent aux applications résidentes telles que les serveurs web, tandis que les Jobs conviennent aux calculs à grande échelle et aux applications par lots.
Même si tous les pods interceptés sont arrêtés normalement, ils ne sont pas supprimés et restent en mémoire, ce qui vous permet d'analyser les journaux et les résultats d'exécution des pods après leur arrêt.
Il peut être facilement étendu en exécutant plusieurs pods en parallèle, et son traitement est aisé grâce à son exécution en tant que pod et sa connexion aux services Kubernetes.
--- p.239
Une image temporaire est la première image créée en injectant des fichiers provenant de l'extérieur du conteneur via la commande Dockerfile.
Si nous suivons les parents de toutes les images conteneurs existantes, elles aboutissent toutes à l'image temporaire.
Autrement dit, Scratch est l'ancêtre de l'image conteneur.
/ gratter L'intérieur est vide.
Lors de la création d'une image basée sur ce modèle, les fichiers nécessaires sont copiés depuis l'extérieur du conteneur afin de configurer l'image.
Jusqu'à présent, vous pouviez entrer dans le conteneur en utilisant sh, donc à première vue, l'intérieur du conteneur ne semblait pas différent d'un système Linux normal.
Vous vous demandez peut-être comment nous pouvons générer une image à partir d'une image vierge qui semble reproduire fidèlement le système d'exploitation.
/ Créons donc une image Ubuntu.
--- p.405
Dans le cadre du développement en équipe, l'utilisation d'outils et de versions unifiés peut contribuer à éviter des problèmes inutiles.
Lorsqu'on travaille simultanément sur plusieurs projets, l'environnement hôte peut être contaminé lors du passage d'un projet à l'autre.
Pour éviter ce genre de problèmes, il est judicieux de fournir un environnement de développement commun dans un conteneur isolé de l'hôte et incluant les outils nécessaires.
Par exemple, pour utiliser des systèmes de stockage de données tels que MySQL et Redis, vous avez besoin d'outils clients pour les manipuler.
Envisagez d'utiliser un standard d'équipe tel que redis-tools, qui comprend mycli1, un client MySQL haute performance, et Redis Cli2, un client Redis.
Les conteneurs vous permettent de préparer rapidement des applications pour votre environnement de développement local et de les déployer telles quelles, quelle que soit la plateforme.
Étant donné que chaque conteneur utilise le même environnement d'exécution, les problèmes dépendant de cet environnement peuvent être minimisés.
De plus, les serveurs web tels qu'Apache ou nginx peuvent être installés dans des conteneurs sans étapes compliquées.
La gestion de la configuration système, y compris les intergiciels, est également définie dans le fichier de paramètres.
L'introduction des conteneurs peut à elle seule simplifier le développement et les opérations.
--- p.12
Au vu de ce que nous avons abordé jusqu'à présent, vous pourriez être tenté de convertir toutes vos structures en conteneurs, mais les conteneurs ne conviennent pas à tout.
Il existe également des domaines où l'utilisation de conteneurs, comme les bases de données, peut s'avérer difficile.
/ Récemment, des solutions de stockage de données gérées, à faible charge et à grande évolutivité, sont également proposées sur les plateformes cloud, ce qui permet de les utiliser de manière appropriée sans avoir à imposer l'utilisation de conteneurs.
Il est important de choisir la bonne fonction pour le bon endroit.
Les serveurs sans état, tels que les serveurs web ou les serveurs API, peuvent être conteneurisés sans y consacrer beaucoup de temps.
Compte tenu de son avantage en termes de grande portabilité, la technologie des conteneurs ne peut être efficace que si elle est introduite à la fois dans les environnements de développement et d'exploitation.
Il existe déjà de nombreux exemples de réussite, et les services gérés dans le cloud deviennent plus faciles à utiliser.
--- p.19
Les pods créés avec des Deployments et des ReplicaSets conviennent aux applications résidentes telles que les serveurs web, tandis que les Jobs conviennent aux calculs à grande échelle et aux applications par lots.
Même si tous les pods interceptés sont arrêtés normalement, ils ne sont pas supprimés et restent en mémoire, ce qui vous permet d'analyser les journaux et les résultats d'exécution des pods après leur arrêt.
Il peut être facilement étendu en exécutant plusieurs pods en parallèle, et son traitement est aisé grâce à son exécution en tant que pod et sa connexion aux services Kubernetes.
--- p.239
Une image temporaire est la première image créée en injectant des fichiers provenant de l'extérieur du conteneur via la commande Dockerfile.
Si nous suivons les parents de toutes les images conteneurs existantes, elles aboutissent toutes à l'image temporaire.
Autrement dit, Scratch est l'ancêtre de l'image conteneur.
/ gratter L'intérieur est vide.
Lors de la création d'une image basée sur ce modèle, les fichiers nécessaires sont copiés depuis l'extérieur du conteneur afin de configurer l'image.
Jusqu'à présent, vous pouviez entrer dans le conteneur en utilisant sh, donc à première vue, l'intérieur du conteneur ne semblait pas différent d'un système Linux normal.
Vous vous demandez peut-être comment nous pouvons générer une image à partir d'une image vierge qui semble reproduire fidèlement le système d'exploitation.
/ Créons donc une image Ubuntu.
--- p.405
Dans le cadre du développement en équipe, l'utilisation d'outils et de versions unifiés peut contribuer à éviter des problèmes inutiles.
Lorsqu'on travaille simultanément sur plusieurs projets, l'environnement hôte peut être contaminé lors du passage d'un projet à l'autre.
Pour éviter ce genre de problèmes, il est judicieux de fournir un environnement de développement commun dans un conteneur isolé de l'hôte et incluant les outils nécessaires.
Par exemple, pour utiliser des systèmes de stockage de données tels que MySQL et Redis, vous avez besoin d'outils clients pour les manipuler.
Envisagez d'utiliser un standard d'équipe tel que redis-tools, qui comprend mycli1, un client MySQL haute performance, et Redis Cli2, un client Redis.
--- pp.508-509
Avis de l'éditeur
Une introduction pratique à la technologie des conteneurs que vous pouvez apprendre en suivant les instructions.
Dans un environnement de développement logiciel en constante évolution, la technologie des conteneurs est devenue une nécessité, et non plus une option. Docker et Kubernetes sont désormais des outils essentiels que tout développeur se doit de maîtriser.
Les exigences omnidirectionnelles qui touchent le frontend, le backend, l'infrastructure et le DevOps imposent la technologie des conteneurs à tous les développeurs.
Ce livre est structuré pour vous aider à apprendre la technologie des conteneurs étape par étape, en se concentrant sur Docker et Kubernetes.
Plutôt que de se contenter d'énumérer des concepts, il propose des exemples et une structure axés sur la pratique, permettant même aux débutants de développer un sens pratique immédiatement applicable au travail réel.
Il regorge de compétences pratiques essentielles, allant de la création d'images, à la configuration multi-conteneurs et aux stratégies d'orchestration utilisant Kubernetes.
Cette édition révisée a été entièrement revue et augmentée pour refléter l'évolution de l'écosystème moderne, et l'expérience pratique et l'expertise technique de l'auteur ont été intégrées pour créer un guide plus approfondi et plus pratique.
Au-delà de l'apprentissage conceptuel, vous développerez l'état d'esprit nécessaire au développement et aux opérations, et vous serez capable d'appliquer la technologie des conteneurs en pratique.
Un guide convivial et pratique pour tous les développeurs, des débutants aux experts, qui souhaitent apprendre correctement la technologie des conteneurs.
Faites vos premiers pas dans le monde des technologies de conteneurs grâce à ce livre !
Contenu principal
● Concepts, structure et principes d'exécution des conteneurs et de Docker
● Entraînez-vous à créer et à exécuter des images Docker, ainsi qu'à configurer la redirection de ports.
● Configuration et exécution de plusieurs conteneurs à l'aide de Compose
● Connexion réseau, montage et gestion des secrets entre les conteneurs
● Création d'une application web et d'un serveur API basés sur Docker
● Mise en place d'un système de stockage de données MySQL réel et d'un conteneur de migration
Exploitation à haute disponibilité et stratégie de mise à l'échelle via Kubernetes
● Compétences pratiques telles que les paramètres de sécurité, les volumes et la collecte des journaux dans l'environnement d'exploitation
Dans un environnement de développement logiciel en constante évolution, la technologie des conteneurs est devenue une nécessité, et non plus une option. Docker et Kubernetes sont désormais des outils essentiels que tout développeur se doit de maîtriser.
Les exigences omnidirectionnelles qui touchent le frontend, le backend, l'infrastructure et le DevOps imposent la technologie des conteneurs à tous les développeurs.
Ce livre est structuré pour vous aider à apprendre la technologie des conteneurs étape par étape, en se concentrant sur Docker et Kubernetes.
Plutôt que de se contenter d'énumérer des concepts, il propose des exemples et une structure axés sur la pratique, permettant même aux débutants de développer un sens pratique immédiatement applicable au travail réel.
Il regorge de compétences pratiques essentielles, allant de la création d'images, à la configuration multi-conteneurs et aux stratégies d'orchestration utilisant Kubernetes.
Cette édition révisée a été entièrement revue et augmentée pour refléter l'évolution de l'écosystème moderne, et l'expérience pratique et l'expertise technique de l'auteur ont été intégrées pour créer un guide plus approfondi et plus pratique.
Au-delà de l'apprentissage conceptuel, vous développerez l'état d'esprit nécessaire au développement et aux opérations, et vous serez capable d'appliquer la technologie des conteneurs en pratique.
Un guide convivial et pratique pour tous les développeurs, des débutants aux experts, qui souhaitent apprendre correctement la technologie des conteneurs.
Faites vos premiers pas dans le monde des technologies de conteneurs grâce à ce livre !
Contenu principal
● Concepts, structure et principes d'exécution des conteneurs et de Docker
● Entraînez-vous à créer et à exécuter des images Docker, ainsi qu'à configurer la redirection de ports.
● Configuration et exécution de plusieurs conteneurs à l'aide de Compose
● Connexion réseau, montage et gestion des secrets entre les conteneurs
● Création d'une application web et d'un serveur API basés sur Docker
● Mise en place d'un système de stockage de données MySQL réel et d'un conteneur de migration
Exploitation à haute disponibilité et stratégie de mise à l'échelle via Kubernetes
● Compétences pratiques telles que les paramètres de sécurité, les volumes et la collecte des journaux dans l'environnement d'exploitation
SPÉCIFICATIONS DES PRODUITS
- Date d'émission : 29 mai 2025
Nombre de pages, poids, dimensions : 624 pages | 1 192 g | 188 × 245 × 30 mm
- ISBN13 : 9791194587279
Vous aimerez peut-être aussi
카테고리
Langue coréenne
Langue coréenne