docker run -i -t --name apache_web ubuntu /bin/bash
Cela crée un nouveau conteneur avec un identifiant unique et le nom apache_web. Cela vous donne également un shell racine car vous avez spécifié /bin/bash comme commande à exécuter. Maintenant, installez le serveur Web Apache en utilisant apt-get:
apt-get install apache2
Notez que vous n'avez pas besoin d'utiliser sudoparce que vous utilisez le compte root à l'intérieur du conteneur. Notez que vous faire il faut courir apt-get updatecar, encore une fois, la liste des packages à l’intérieur du conteneur n’est pas la même que celle à l’extérieur. (Les autres instructions à l'intérieur du conteneur ne nécessitent pas sudo sauf indication contraire.)
La normale apt-get La sortie apparaît et le package Apache2 est installé dans votre nouveau conteneur. Une fois l'installation terminée, démarrez Apache, installez curlet testez l'installation, le tout depuis votre conteneur :
service apache2 start
apt-get install curl
curl http://localhost
Si vous faisiez cela dans un environnement de production, vous configureriez ensuite Apache selon vos besoins et installeriez une application à cet effet. Docker permet aux répertoires situés à l'extérieur d'un conteneur d'être mappés aux chemins à l'intérieur de celui-ci. Une approche consiste donc à stocker votre application Web dans un répertoire sur l'hôte et à la rendre visible au conteneur via un mappage.
Créer un script de démarrage pour un conteneur Docker
N'oubliez pas qu'un conteneur Docker ne s'exécute que tant que son ou ses processus sont actifs. Ainsi, si le processus que vous lancez lors de la première exécution d'un conteneur passe en arrière-plan, comme un démon système, Docker arrêtera le conteneur. Par conséquent, vous devez exécuter Apache au premier plan lors du lancement du conteneur, afin que le conteneur ne se ferme pas dès son lancement.
Créez un script, startapache.shdans /usr/local/sbin:
apt-get install nano
nano /usr/local/sbin/startapache.sh
(Vous n'êtes pas obligé d'utiliser le nano éditeur pour le faire, mais c'est pratique.)
Le contenu de startapache.sh:
#!/bin/bash
. /etc/apache2/envvars
/usr/sbin/apache2 -D FOREGROUND
Enregistrez le fichier et rendez-le exécutable :
chmod +x /usr/local/sbin/startapache.sh
Tout ce que fait ce petit script, c'est d'introduire les variables d'environnement appropriées pour Apache et de démarrer le processus Apache au premier plan.
Vous avez fini de modifier le contenu du conteneur, vous pouvez donc quitter le conteneur en tapant exit. Lorsque vous quittez le conteneur, il s'arrête.
Validez le conteneur pour créer une nouvelle image Docker
Maintenant tu dois commettre le conteneur pour enregistrer les modifications que vous avez apportées :
docker commit apache_web local:apache_web
Le commit sauvegardera votre conteneur comme une nouvelle image et renvoie un identifiant unique. L'argumentation local:apache_web entraînera le placement du commit dans un référentiel local nommé local avec une étiquette de apache_web.
Vous pouvez le voir en exécutant la commande docker images:
REPOSITORY TAG IMAGE ID CREATED SIZE
local apache_web 540faa63535d 24 seconds ago 233MB
ubuntu latest b1e9cef3f297 4 weeks ago 78.1MB
Notez que les détails exacts de votre image (l'ID de l'image et la taille du conteneur) seront différents de mon exemple.
Bases du réseau Docker
Maintenant que vous avez votre image, vous pouvez démarrer votre conteneur et commencer à diffuser des pages. Avant de faire cela, voyons comment Docker gère la mise en réseau.
Docker peut créer divers réseaux virtuels utilisés par les conteneurs Docker pour communiquer entre eux et avec le monde extérieur :
- pont: Il s'agit du réseau auquel les conteneurs se connectent par défaut. Le
bridgeLe réseau permet aux conteneurs de communiquer directement entre eux, mais pas avec le système hôte. - hôte: Ce réseau permet aux conteneurs d'être vus directement par l'hôte, comme si les applications qu'ils contiennent s'exécutaient en tant que services de réseau local.
- aucun: Il s'agit essentiellement d'un réseau nul ou de bouclage. Un conteneur connecté à
nonene peut rien voir d'autre que lui-même.
D'autres pilotes réseau existent également, mais ces trois-là sont les plus cruciaux pour débuter.
Lorsque vous souhaitez lancer un conteneur et le faire communiquer à la fois avec d'autres conteneurs et avec le monde extérieur, vous devez mapper manuellement les ports de ce conteneur vers l'hôte. Pour mon exemple, vous pouvez le faire sur la ligne de commande lorsque vous lancez votre conteneur nouvellement créé :
docker run -d -p 8080:80 --name apache local:apache_web /usr/local/sbin/startapache.sh
Le -p Le commutateur est utilisé pour le mappage des ports. Ici, ça cartographie port 8080 sur l'hôte pour port 80 à l'intérieur du conteneur.
Une fois que vous avez exécuté cette commande, vous devriez pouvoir pointer un navigateur Web vers l'adresse IP de l'hôte et voir la page par défaut du serveur Web Apache.
Vous pouvez voir l'état du conteneur et les mappages de ports TCP en utilisant le docker ps commande:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
NAMES
81d8985d0197 local:apache_web "/usr/local/sbin/sta…" 13 minutes ago Up 12 minutes 0.0.0.0:8080->80/tcp apache
Vous pouvez également rechercher les mappages de réseau en utilisant le docker port commande, dans ce cas docker port apache
80/tcp -> 0.0.0.0:8080
Notez que vous pouvez utiliser le -P option sur le docker run commande pour publier tous les ports ouverts du conteneur sur l'hôte et mapper un port élevé aléatoire tel que 49153 au port 80 du conteneur. Cela peut être utilisé dans les scripts si nécessaire, mais c'est généralement une mauvaise idée de le faire en production.
À ce stade, vous disposez d’un conteneur Docker entièrement fonctionnel exécutant votre processus Apache. Lorsque vous arrêtez le conteneur, il restera dans le système et pourra être redémarré à tout moment via le docker restart commande.
Utiliser Dockerfiles pour automatiser la création d'images Docker
Aussi éducatif que soit la création manuelle de conteneurs Docker, il est purement fastidieux de le faire à plusieurs reprises. Pour rendre le processus de création simple, cohérent et reproductible, Docker fournit une forme d'automatisation pour la création d'images Docker appelée Dockerfiles.
Les fichiers Docker sont des fichiers texte, stockés dans un référentiel aux côtés des images Docker. Ils décrivent comment un conteneur spécifique est construit, permettant à Docker d'effectuer automatiquement le processus de construction pour vous. Voici un exemple de Dockerfile pour un conteneur minimal, un peu comme celui que j'ai construit dans les premières étapes de cette démo :
FROM ubuntu:latest
RUN apt-get update
RUN apt-get install -y curl
ENTRYPOINT ("/bin/bash")
Si vous enregistrez ce fichier sous dftest dans votre répertoire local, vous pouvez créer une image nommée ubuntu:testing depuis dftest avec la commande suivante :
docker build -t ubuntu:testing - < dftest
Dans PowerShell, vous utiliseriez cette commande :
cat .dftest | docker build -t ubuntu:testing -
Docker construira une nouvelle image basée sur le ubuntu:latest image. Ensuite, à l'intérieur du conteneur, il effectuera une apt-get update et utiliser apt-get installer curl. Enfin, il définira la commande par défaut à exécuter au lancement du conteneur comme /bin/bash. Vous pourriez alors exécuter :
docker run -i -t ubuntu:testing
Et voilà ! Vous disposez d'un shell racine sur un nouveau conteneur construit selon ces spécifications. Notez que vous pouvez également lancer le conteneur avec cette commande :
docker run -i -t dftest
De nombreux opérateurs peuvent être utilisés dans un Dockerfile, tels que le mappage de répertoires hôtes sur des conteneurs, la définition de variables d'environnement et même la définition de déclencheurs à utiliser dans les versions futures. Consultez la page de référence Dockerfile pour une liste complète des opérateurs Dockerfile.
Prochaines étapes avec Docker
Docker offre bien plus que ce que nous avons abordé dans ce guide, mais vous devez avoir une compréhension de base du fonctionnement de Docker, une compréhension des concepts clés de Docker et suffisamment de familiarité pour créer des conteneurs fonctionnels. Vous pouvez trouver plus d'informations sur le site Web Docker, y compris un didacticiel en ligne qui détaille plus en détail les fonctionnalités de Docker.



GIPHY App Key not set. Please check settings