Comment créer et configurer automatiquement les images Docker personnalisées avec Dockerfile - Partie 3

Comment créer et configurer automatiquement les images Docker personnalisées avec Dockerfile - Partie 3

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:

  1. 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 
  1. Maintienneur = Auteur de l'image de construction
  2. COURIR = Cette instruction peut être utilisée sur plusieurs lignes et exécute toutes les commandes après la création d'une image Docker.
  3. CMD = Exécutez n'importe quelle commande lorsque l'image Docker est démarrée. Utilisez une seule instruction CMD dans un dockerfile.
  4. POINT D'ACCÈS = Identique à CMD mais utilisé comme commande principale de l'image.
  5. 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.
  6. Env = Définir les variables d'environnement des conteneurs.
  7. 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 / dockerfile 
Cré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 plan 
Ré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-apache 
Exé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: 81 
Vé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 docker  
Vé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 ps 
Donner 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-www 
Surveiller 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