Docker pour les développeurs .NET
Editions ENI
Avant-propos
Chapitre 1
Introduction
1. Présentation de Docker9
2. Concept de conteneurs10
2.1 Avantages pour l'infrastructure10
2.1.1 Absence de modification du système11
2.1.2 Performances accrues12
2.2 Avantages pour le développement15
2.2.1 Facilité et rapidité d'évaluation15
2.2.2 Processus pilotable15
2.2.3 Ressources jetables16
2.2.4 Portabilité17
3. Conclusion18
Chapitre 2
Mise en place
1. Introduction19
2. Installation sous Linux19
2.1 Ajout du dépôt officiel20
2.2 Installer Docker et vérifier22
3. Installation sous macOS24
4. Installation sous Windows26
4.1 Docker Desktop (méthode classique)26
4.2 Docker Toolbox29
4.3 WSL 230
4.4 Interfaces graphiques32
4.4.1 Kitematic33
4.4.2 Docker Dashboard35
Chapitre 3
Le CLI
1. Fonctionnement du CLI39
1.1 État de l'installation39
1.2 Récupération et exécution d'une image42
2. État du système44
2.1 Management des images et conteneurs45
2.1.1 Gestion des images45
2.1.2 Gestion des conteneurs48
2.2 Interagir et écouter un conteneur50
2.2.1 Cycle de vie50
2.2.2 Monitoring54
2.2.3 Interactions manuelles57
3. Interactions avec le système hôte61
3.1 Volumes61
3.1.1 Syntaxe62
3.2 Réseau66
3.2.1 Syntaxe et principes de base66
3.2.2 Gestion du réseau68
3.3 Nettoyage72
4. À vous de jouer !73
4.1 Énoncé73
4.2 Corrigé74
Chapitre 4
Dockerfile
1. Principes et syntaxe77
1.1 Instructions FROM et WORKDIR78
1.2 Instruction RUN80
1.3 Docker build82
1.3.1 Tag des images83
1.3.2 Contexte de build92
1.4 Instruction COPY93
1.5 Instruction ENTRYPOINT et CMD96
1.5.1 Généralités96
1.5.2 Spécificités98
2. Concepts avancés99
2.1 Cache99
2.2 Utilisation des couches précédentes101
2.3 Exposition réseau104
2.4 Variables d'environnement106
2.5 Volumes108
2.6 Argument de build109
2.7 Envoyer votre image110
2.8 Sécurité115
2.8.1 S'assurer de la mise à jour115
2.8.2 Gérer le niveau de droit117
3. Exercice119
3.1 Énoncé119
3.2 Corrigé120
Chapitre 5
Docker Compose
1. Introduction121
2. Syntaxe du fichier Compose122
2.1 Structure d'un fichier Compose123
2.2 Bloc de version124
2.3 Bloc services126
2.3.1 Image126
2.3.2 Build127
2.3.3 Identité et dépendance128
2.3.4 Gestion du réseau131
2.3.5 Volumes135
2.3.6 Pilotage avancé138
2.4 Bloc réseau142
2.5 Bloc volumes146
3. CLI147
3.1 Mise en place147
3.2 Monitoring151
Chapitre 6
Docker et l'usine logicielle
1. Introduction153
1.1 Intégration continue155
1.2 Déploiement continu156
1.3 La place du développeur157
2. Pipeline DevOps158
2.1 Création manuelle159
2.1.1 Environnement de build159
2.1.2 Exécution des tests163
2.1.3 Création de l'image finale165
2.1.4 Automatisation du processus166
2.2 Azure DevOps169
2.2.1 Initialiser l'environnement169
2.2.2 Création du pipeline171
2.2.3 Création du dépôt sur Azure177
2.2.4 Mise à jour du pipeline pour mettre à disposition l'image181
2.2.5 Déploiement automatique sur Azure189
3. Outils pour le développement197
3.1 Dépôt privé197
3.1.1 Dépôt officiel198
3.1.2 Sonatype Nexus199
3.2 Outil d'analyse de code204
3.2.1 Déploiement du serveur Sonarqube204
3.2.2 Analyse avec l'outil global dotnet207
3.2.3 Couplage à Visual Studio sous Windows209
3.3 Outil de monitoring212
3.3.1 Surveillance globale212
3.3.2 Test de montée en charge215
Chapitre 7
Aller plus loin avec les outils de développement
1. Introduction217
2. Visual Studio pour Windows217
2.1 Assistant d'intégration de Docker218
2.2 Fenêtre de gestion des conteneurs219
2.2.1 Détails d'un conteneur220
2.2.2 Interaction avec le conteneur221
2.2.3 Interaction avec les images223
3. Visual Studio Code224
3.1 Vue du système225
3.1.1 Conteneurs226
3.1.2 Images227
3.1.3 Registries228
3.1.4 Networks228
3.1.5 Volumes229
3.2 Amélioration de l'éditeur229
4. Conseils généraux aux développeurs232
4.1 Proche de la production232
4.2 Accélérer votre workflow233
4.3 Prendre en compte la sécurité234
Chapitre 8
Conteneurs Windows
1. Introduction237
1.1 Fonctionnement de la licence238
1.2 Changement sous Windows 10239
1.3 Activation sous Windows Server240
1.3.1 Installation240
1.3.2 Mise à jour242
1.4 Version de l'image243
1.5 Différences des images de base245
2. Spécificités Windows247
2.1 Volumes247
2.2 Spécificités du Dockerfile249
2.3 Couches protégées250
3. Outils spécifiques251
3.1 Dépôt local251
3.2 Outils de monitoring254
4. Déployer une application .NET Framework255
4.1 Étape de build256
4.2 Étape d'exploitation257
4.3 Installation des outils de management259
4.4 Finalisation du Dockerfile263
Index
265