Android

Docker run command avec des exemples

Creating your first Dockerfile, image and container

Creating your first Dockerfile, image and container

Table des matières:

Anonim

Docker est une plate-forme qui vous permet de développer, tester et déployer des applications en tant que conteneurs portables et autonomes qui s'exécutent pratiquement n'importe où.

La commande docker run crée un conteneur à partir d'une image donnée et démarre le conteneur à l'aide d'une commande donnée. C'est l'une des premières commandes avec lesquelles vous devez vous familiariser lorsque vous commencez à travailler avec Docker., nous utiliserons l'image officielle Nginx pour montrer différentes façons d'exécuter un conteneur Docker.

Docker Run Command

La commande docker run prend la forme suivante:

docker run IMAGE

Le nom de l'image à partir de laquelle le conteneur doit être créé est le seul argument requis pour la commande docker run . Si l'image n'est pas présente sur le système local, elle est extraite du registre.

Si aucune commande n'est spécifiée, la commande spécifiée dans les instructions CMD ou ENTRYPOINT est exécutée lors de l'exécution du conteneur.

Depuis la version 1.13, la Docker CLI a été restructurée et toutes les commandes ont été regroupées sous l'objet avec lequel elles interagissent.

Étant donné que la commande run interagit avec les conteneurs, il s'agit désormais d'une sous-commande du docker container . La syntaxe de la nouvelle commande est la suivante:

docker container run IMAGE

L'ancienne syntaxe antérieure à 1.13 est toujours prise en charge. Sous le capot, la commande docker run est un alias de docker container run . Les utilisateurs sont encouragés à utiliser la nouvelle syntaxe de commande.

Une liste de toutes les options d' docker container run Docker se trouve sur la page de documentation Docker.

Exécutez le conteneur au premier plan

Par défaut, lorsqu'aucune option n'est fournie à la commande docker run , le processus racine est démarré au premier plan. Cela signifie que l'entrée, la sortie et l'erreur standard du processus racine sont attachées à la session de terminal.

docker container run nginx

La sortie du processus nginx sera affichée sur votre terminal. Comme il n'y a pas de connexion au serveur Web, le terminal est vide.

Pour arrêter le conteneur, terminez le processus Nginx en cours en appuyant sur CTRL+C

Exécutez le conteneur en mode détaché

Pour garder le conteneur en cours d'exécution lorsque vous quittez la session de terminal, démarrez-le en mode détaché. Ceci est similaire à l'exécution d'un processus Linux en arrière-plan.

Utilisez l'option -d pour démarrer un conteneur détaché:

docker container run -d nginx

050e72d8567a3ec1e66370350b0069ab5219614f9701f63fcf02e8c8689f04fa

Le conteneur détaché s'arrêtera à la fin du processus racine.

Vous pouvez répertorier les conteneurs en cours d'exécution à l'aide de la commande docker container ls .

Pour attacher votre terminal au processus racine du conteneur détaché, utilisez la commande docker container attach .

Retirez le conteneur après la sortie

Par défaut, lorsque le conteneur se ferme, son système de fichiers persiste sur le système hôte.

Les options --rm indiquent docker run commande --rm docker run de supprimer le conteneur lorsqu'il se ferme automatiquement:

docker container run --rm nginx

L'image Nginx n'est peut-être pas le meilleur exemple pour nettoyer le système de fichiers du conteneur après la fermeture du conteneur. Cette option est généralement utilisée sur les conteneurs de premier plan qui effectuent des tâches à court terme telles que des tests ou des sauvegardes de base de données.

Définissez le nom du conteneur

Dans Docker, chaque conteneur est identifié par son UUID et son nom. Par défaut, s'il n'est pas explicitement défini, le nom du conteneur est généré automatiquement par le démon Docker.

Utilisez l'option --name pour attribuer un nom personnalisé au conteneur:

docker container run -d --name my_nginx nginx

Le nom du conteneur doit être unique. Si vous essayez de démarrer un autre conteneur avec le même nom, vous obtiendrez une erreur similaire à ceci:

docker: Error response from daemon: Conflict. The container name "/my_nginx" is already in use by container "9…c". You have to remove (or rename) that container to be able to reuse that name.

Exécutez le docker container ls -a pour répertorier tous les conteneurs et voir leurs noms:

docker container ls

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9d695c1f5ef4 nginx "nginx -g 'daemon of…" 36 seconds ago Up 35 seconds 80/tcp my_nginx

Les noms significatifs sont utiles pour référencer le conteneur dans un réseau Docker ou lors de l'exécution de commandes CLI docker.

Publication de ports conteneurs

Par défaut, si aucun port n'est publié, le processus en cours d'exécution dans le conteneur n'est accessible que depuis l'intérieur du conteneur.

La publication de ports signifie mapper les ports de conteneur aux ports de la machine hôte afin que les ports soient disponibles pour les services en dehors de Docker.

Pour publier un port, utilisez les options -p comme suit:

-p host_ip:host_port:container_port/protocol

  • Si aucun host_ip n'est spécifié, sa valeur par défaut est 0.0.0.0 . Si aucun protocol n'est spécifié, sa valeur par défaut est TCP. Pour publier plusieurs ports, utilisez plusieurs options -p .

Pour mapper le port TCP 80 (nginx) du conteneur au port 8080 sur l'interface hôte locale, vous devez exécuter:

docker container run --name web_server -d -p 8080:80 nginx

Vous pouvez vérifier que le port est publié en ouvrant http://localhost:8080 dans votre navigateur ou en exécutant la commande curl suivante sur l'hôte Docker:

curl -I

La sortie ressemblera à ceci:

HTTP/1.1 200 OK Server: nginx/1.17.6 Date: Tue, 26 Nov 2019 22:55:59 GMT Content-Type: text/html Content-Length: 612 Last-Modified: Tue, 19 Nov 2019 12:50:08 GMT Connection: keep-alive ETag: "5dd3e500-264" Accept-Ranges: bytes

Partager des données (monter des volumes)

Lorsqu'un conteneur est arrêté, toutes les données générées par le conteneur sont supprimées. Les volumes Docker sont le moyen préféré de faire persister les données et de les partager sur plusieurs conteneurs.

Pour créer et gérer des volumes, utilisez les options -p comme suit:

-v host_src:container_dest:options

  • Le host_src peut être un chemin absolu vers un fichier ou un répertoire sur l'hôte ou un volume nommé. Le container_dest est un chemin absolu vers un fichier ou un répertoire sur le conteneur. Les host_src peuvent être rw (lecture-écriture) et ro (lecture seule)). Si aucune option n'est spécifiée, elle est par défaut rw .

Pour expliquer comment cela fonctionne, créons un répertoire sur l'hôte et y mettons un fichier index.html :

mkdir public_html echo "Testing Docker Volumes" > public_html/index.html

Ensuite, montez le répertoire public_html dans /usr/share/nginx/html dans le conteneur:

docker run --name web_server -d -p 8080:80 -v $(pwd)/public_html:/usr/share/nginx/html nginx

Au lieu de spécifier le chemin absolu du répertoire public_html , nous utilisons la commande $(pwd) , qui imprime le répertoire de travail actuel.

Maintenant, si vous tapez http://localhost:8080 dans votre navigateur, vous devriez voir le contenu du fichier index.html . Vous pouvez également utiliser curl :

curl

Testing Docker Volumes

Exécutez le conteneur de manière interactive

Lorsque vous traitez avec des processus interactifs comme bash , utilisez les options -i et -t pour démarrer le conteneur.

L'option -it indique à Docker de conserver l'entrée standard attachée au terminal et d'allouer un pseudo-tty:

docker container run -it nginx /bin/bash

Le shell Bash du conteneur sera attaché au terminal et l'invite de commande changera:

root@1da70f1937f5:/#

Maintenant, vous pouvez interagir avec le shell du conteneur et exécuter n'importe quelle commande à l'intérieur de celui-ci.

Dans cet exemple, nous avons fourni une commande ( /bin/bash ) comme argument à la commande docker run qui a été exécutée au lieu de celle spécifiée dans le Dockerfile.

Conclusion

Docker est la norme pour l'empaquetage et le déploiement d'applications et un composant essentiel de CI / CD, de l'automatisation et de DevOps.

La commande d'exécution du conteneur Docker est utilisée pour créer et exécuter des conteneurs Docker.

docker