Comment créer et configurer automatiquement les images Docker personnalisées avec Dockerfile - Partie 3
- 4202
- 776
- Maëlle Perez
Ce tutoriel se concentrera sur la façon de créer une image Docker personnalisée basée sur Ubuntu avec Apache Service installé. L'ensemble du processus sera automatisé à l'aide d'un Dockerfile.
Les images Docker peuvent être construites automatiquement à partir de fichiers texte, nommés Dockerfiles. Un fichier docker contient des instructions commandées étape par étape ou des commandes utilisées pour créer et configurer une image Docker.
Exigences
- Installer Docker et apprendre la manipulation du conteneur Docker - Partie 1
- Déployer et exécuter des applications sous les conteneurs Docker - Partie 2
Fondamentalement, un fichier docker contient diverses instructions afin de créer et de configurer un conteneur spécifique en fonction de vos exigences. Les instructions suivantes sont les plus utilisées, certaines étant obligatoires:
DEPUIS
= Obligatoire comme première instruction dans un fichier docker. Demande à Docker de tirer l'image de base à partir de laquelle vous construisez la nouvelle image. Utilisez une balise pour spécifier l'image exacte à partir de laquelle vous construisez:
Ex: d'Ubuntu: 20.04
Maintienneur
= Auteur de l'image de constructionCOURIR
= Cette instruction peut être utilisée sur plusieurs lignes et exécute toutes les commandes après la création d'une image Docker.CMD
= Exécutez n'importe quelle commande lorsque l'image Docker est démarrée. Utilisez une seule instruction CMD dans un dockerfile.POINT D'ACCÈS
= Identique à CMD mais utilisé comme commande principale de l'image.EXPOSER
= Demande au conteneur d'écouter sur les ports réseau lors de l'exécution. Les ports de conteneur ne sont pas accessibles à partir de l'hôte par défaut.Env
= Définir les variables d'environnement des conteneurs.AJOUTER
= Copier les ressources (fichiers, répertoires ou fichiers à partir des URL).
Étape 1: Création ou écriture du référentiel Dockerfile
1. Tout d'abord, créons une sorte de Dockerfile Référentiels afin de réutiliser des fichiers à l'avenir pour créer d'autres images. Faire un répertoire vide quelque part / var
partition où nous créerons le fichier avec les instructions qui seront utilisées pour construire l'image nouvellement docker.
# mkdir -p / var / docker / ubuntu / apache # touch / var / docker / ubuntu / apache / dockerfileCréer un référentiel dockerfile
2. Ensuite, commencez à modifier le fichier avec les instructions suivantes:
# vi / var / docker / ubuntu / apache / dockerfile
Extrait Dokerfile:
De Ubuntu Haigeer votre_name <[email protected]> Exécuter apt-get -y installer apache2 Exécutez Echo "Hello Apache Server sur Ubuntu Docker"> / var / www / html / index.html exposer 80 cmd / usr / sbin / apache2ctl -d premier planRéférentiel Dockerfile
Maintenant, passons par les instructions du fichier:
La première ligne nous dit que nous construisons à partir d'un Ubuntu image. Si aucune balise n'est soumise, disons 14:10 Par exemple, la dernière image de Hub docker est utilisé.
Sur la deuxième ligne, nous avons ajouté le nom et e-mail du créateur d'image. Les deux suivants COURIR Les lignes seront exécutées dans le conteneur lors de la construction de l'image et installeront Apache démon et écho un texte dans la page Web Apache par défaut.
Le EXPOSER la ligne instruirea le docker conteneur à écouter sur le port 80, Mais le port ne sera pas disponible à l'extérieur. La dernière ligne demande au conteneur d'exécuter le service Apache au premier plan après le démarrage du conteneur.
3. La dernière chose que nous devons faire est de commencer à créer l'image en émettant la commande ci-dessous, qui créera localement une nouvelle image Docker nommée ubuntu-apache
Basé sur DockerFile créé précédemment, comme le montre cet exemple:
# docker build -t ubuntu-apache / var / docker / ubuntu / apache /Créer une image Docker
4. Une fois l'image créée par Docker, Vous pouvez répertorier toutes les images disponibles et identifier votre image en émettant la commande suivante:
# images dockerÉnumérez toutes les images Docker
Étape 2: Exécutez le conteneur et accédez à Apache depuis LAN
5. Afin d'exécuter le conteneur en continu (en arrière-plan) et d'accéder aux services (ports) exposés en conteneur à partir de l'hôte ou d'une autre machine distante de votre LAN, exécutez la commande ci-dessous sur votre borne hôte:
# docker run -d -p 81:80 ubuntu-apacheExécuter l'image du conteneur Docker
Ici le -d
L'option exécute l'on ubuntu-apache
conteneur en arrière-plan (comme un démon) et le -p
Mapes d'option Le port de conteneur 80 à votre port local 81. L'accès à LAN extérieur au service Apache peut être atteint via le port 81 seul.
La commande netstat vous donnera une idée des ports que l'hôte écoute.
Après le démarrage du conteneur, vous pouvez également courir docker ps
commande pour afficher l'état du conteneur en cours d'exécution.
6. La page Web peut être affichée sur votre hôte à la ligne de commande en utilisant boucle Utilitaire contre votre adresse IP de machine, localhost ou interface nette docker sur le port 81. Utilisez la ligne de commande IP pour afficher les adresses IP d'interface réseau.
# ip addr [list Nework Interfaces] # curl ip-address: 81 [Adresse IP de Docker système] # curl localhost: 81 [localhost]Vérifiez l'interface du réseau Docker et l'adresse IP Vérifiez la page Web Docker Apache
7. Pour visiter la page Web de conteneur depuis votre réseau, ouvrez un navigateur à un emplacement distant et utilisez le protocole HTTP, l'adresse IP de la machine où le conteneur est en cours d'exécution, suivi du port 81 comme illustré sur l'image ci-dessous.
http: // ip-address: 81Vérifiez la page APache Container Docker
8. Pour obtenir un à l'intérieur de quels processus fonctionnent à l'intérieur du conteneur Issuez la commande suivante:
# docker ps # top dockerVérifier les processus Docker en cours d'exécution
9. Pour arrêter le problème du conteneur Docker Stop
Commande suivie de l'ID ou du nom du conteneur.
# docker stop # docker ps
dix. Dans le cas où vous souhaitez attribuer un nom descriptif pour le conteneur, utilisez le --nom
Option comme indiqué dans l'exemple ci-dessous:
# docker run --name my-www -d -p 81:80 ubuntu-apache # docker psDonner le nom du conteneur Docker
Vous pouvez maintenant référencer le conteneur pour la manipulation (démarrer, arrêter, haut, statistiques, etc.) uniquement en utilisant le nom attribué.
# docker statistiques my-wwwSurveiller l'utilisation du conteneur Docker
Étape 3: Créez un fichier de configuration à l'échelle du système pour le conteneur Docker
11. Sur Centos / Rhel vous pouvez créer un systemd Fichier de configuration et gérer le conteneur comme vous le faites normalement pour tout autre service local.
Par exemple, créez un nouveau fichier systemd nommé, disons, apache-docker.service
Utilisation de la commande suivante:
# vi / etc / systemd / system / apache-docker.service
apache-docker.service Extrait de fichiers:
[Unité] Description = conteneur Apache nécessite = docker.service après = docker.service [service] redémarrer = toujours execStart = / usr / bin / docker start -a my-www execstop = / usr / bin / docker stop -t 2 my-www [install] wantedby = local.cible
12. Après avoir terminé la modification du fichier, fermez-le, rechargez le démon systemd pour refléter les modifications et démarrez le conteneur en émettant les commandes suivantes:
# SystemCTL Daemon-Recload # SystemCTL Start Apache-Docker.service # statut systemctl apache-docker.service
C'était juste un simple exemple de ce que vous pouvez faire avec un simple Dockerfile Mais vous pouvez prédéfinir des applications assez sophistiquées que vous pouvez incendier en quelques secondes avec un minimum de ressources et d'efforts.
Lire plus approfondie:
Partie 4: Comment surveiller les conteneurs Docker dans Linux- « Comment exécuter n'importe quelle distribution Linux directement à partir du disque dur dans Ubuntu à l'aide de Grub Menu
- Comment installer des mises à jour de sécurité dans Ubuntu »