Utilisation des conteneurs Docker
Un conteneur Docker est un environnement logiciel léger, portable et autonome utilisé pour exécuter des applications.
Les conteneurs Docker empaquettent l'application et toutes ses dépendances, y compris les bibliothèques, les fichiers de configuration, les outils système, etc., dans un paquet standardisé, permettant à l'application de s'exécuter de manière cohérente n'importe où.
Les conteneurs sont une virtualisation au niveau du système d'exploitation. Ils n'ont pas besoin d'exécuter un système d'exploitation complet, ce qui rend le démarrage et l'exploitation plus efficaces.
La relation entre les images et les conteneurs
- Image: Un modèle statique pour les conteneurs, contenant toutes les dépendances et les fichiers requis pour que l'application s'exécute. Les images sont immuables.
- Conteneur: Une instance en cours d'exécution d'une image, avec son propre système de fichiers, ses processus, son réseau, etc., et elle est dynamique. Un conteneur démarre à partir d'une image et reste modifiable pendant son exécution.

Client Docker
Le client Docker est un outil en ligne de commande qui interagit avec le démon Docker.
Le client Docker est très simple ; nous pouvons directement saisir la commande docker pour voir toutes les options de commande du client Docker.
example@example:~# docker

Vous pouvez utiliser la commandedocker command --helppour mieux comprendre comment utiliser une commande Docker spécifiée.
Par exemple, si nous voulons consulterdocker statsl'utilisation détaillée des commandes :
example@example:~# docker stats --help

Voici les commandes courantes du client Docker :
| Commande | Fonctionnalités | Exemple |
|---|---|---|
docker run | Démarrer un nouveau conteneur et exécuter une commande | docker run -d ubuntu |
docker ps | Lister les conteneurs en cours d'exécution | docker ps |
docker ps -a | Lister tous les conteneurs (y compris les conteneurs arrêtés) | docker ps -a |
docker build | Utiliser un Dockerfile pour construire l'image. | docker build -t my-image . |
docker images | Lister toutes les images stockées localement | docker images |
docker pull | Récupérer une image depuis un registre Docker | docker pull ubuntu |
docker push | Pousser une image vers un registre Docker | docker push my-image |
docker exec | Exécuter une commande dans un conteneur en cours d'exécution | docker exec -it container_name bash |
docker stop | Arrêter un ou plusieurs conteneurs | docker stop container_name |
docker start | Démarrer les conteneurs arrêtés | docker start container_name |
docker restart | Redémarrer un conteneur | docker restart container_name |
docker rm | Supprimer un ou plusieurs conteneurs | docker rm container_name |
docker rmi | Supprimer une ou plusieurs images | docker rmi my-image |
docker logs | Afficher les journaux du conteneur | docker logs container_name |
docker inspect | Obtenir des informations détaillées sur un conteneur ou une image | docker inspect container_name |
docker exec -it | Entrer dans le terminal interactif d'un conteneur | docker exec -it container_name /bin/bash |
docker network ls | Lister tous les réseaux Docker | docker network ls |
docker volume ls | Lister tous les volumes Docker | docker volume ls |
docker-compose up | Démarrer une application multi-conteneurs (à partir d'undocker-compose.ymlfichier) | docker-compose up |
docker-compose down | Arrêter et supprimer le conteneur créé pardocker-composeles conteneurs, les réseaux, etc. qui sont démarrés | docker-compose down |
docker info | Afficher des informations détaillées sur le système Docker | docker info |
docker version | Afficher les informations de version pour le client et le démon Docker | docker version |
docker stats | Afficher l'utilisation des ressources des conteneurs en temps réel | docker stats |
docker login | Se connecter au registre Docker | docker login |
docker logout | Se déconnecter du registre Docker | docker logout |
Descriptions des options courantes :
-d: Exécuter le conteneur en arrière-plan, par exempledocker run -d ubuntu。-it: Exécuter le conteneur dans un terminal interactif, par exempledocker exec -it container_name bash。-t:Attribuer une étiquette à une image, par exempledocker build -t my-image .。
Utilisation des conteneurs
Obtenir l'image
Si nous n'avons pas l'image ubuntu localement, nous pouvons utiliser la commande docker pull pour charger l'image ubuntu :
$ docker pull ubuntu
Démarrer le conteneur
La commande suivante démarre un conteneur à l'aide de l'image ubuntu, avec le paramètre permettant d'entrer dans le conteneur en mode ligne de commande :
$ docker run -it ubuntu /bin/bash

Description du paramètre :
- -i:Opération interactive.
- -t: Terminal.
- ubuntu: image ubuntu.
- /bin/bash: La partie après le nom de l'image est la commande. Ici, nous voulons un Shell interactif, donc nous utilisons /bin/bash.
Pour quitter le terminal, tapez simplementexit:
root@ed09e4490c57:/# exit

Démarrer un conteneur arrêté
Les commandes pour afficher tous les conteneurs sont les suivantes :
$ docker ps -a
Cliquez sur l'image pour voir une version agrandie :
Utilisez docker start pour démarrer un conteneur arrêté :
$ docker start b750bbbcfd88

Exécuter en arrière-plan
Dans la plupart des scénarios, nous voulons que le service Docker s'exécute en arrière-plan. Nous pouvons-dSpécifier le mode d'exécution du conteneur.
$ docker run -itd --name ubuntu-test ubuntu /bin/bash
Cliquez sur l'image pour voir une version agrandie :
Remarque :ajouté-dLe paramètre n'entre pas dans le conteneur par défaut ; pour entrer dans le conteneur, vous devez utiliser la commande docker exec(Ceci sera présenté ci-dessous.)
Arrêter un conteneur
La commande pour arrêter un conteneur est la suivante :
$ docker stop <容器 ID>

Un conteneur arrêté peut être redémarré avec docker restart :
$ docker restart <容器 ID>

Entrer dans le conteneur
Lors de l'utilisation de-dLors du démarrage d'un conteneur avec le paramètre, le conteneur s'exécute en arrière-plan. Si vous devez entrer dans le conteneur à ce moment, vous pouvez utiliser la commande suivante pour entrer :
-
docker attach: Permet d'interagir avec l'entrée standard (stdin), la sortie standard (stdout) et l'erreur standard (stderr) du conteneur.
-
docker exec:Il est recommandé d'utiliser la commande docker exec, car cette commande quittera le terminal du conteneur mais n'arrêtera pas le conteneur.
Commande attach
Exemple d'utilisation de la commande docker attach :
$ docker attach 1e560fca3906
Remarque :Si vous quittez ce conteneur, cela entraînera l'arrêt du conteneur.
commande exec
Exemple d'utilisation de la commande docker exec :
docker exec -it 243c32535da7 /bin/bash
Remarque :Si vous quittez ce conteneur, le conteneur ne s'arrêtera pas, c'est pourquoi il est recommandé que tout le monde utilisedocker exec。
Pour plus d'instructions sur les paramètres, veuillez utiliserdocker exec --helppour afficher avec la commande.
Exporter et importer des conteneurs
Exporter le conteneur
Si vous souhaitez exporter un conteneur local, vous pouvez utiliser la commandedocker export.
$ docker export 1e560fca3906 > ubuntu.tar
Exportez l'instantané du conteneur 1e560fca3906 vers un fichier local ubuntu.tar.
Cela exportera un instantané du conteneur vers un fichier local.
Importer un instantané de conteneur
Vous pouvez utiliser docker import pour importer à nouveau un fichier d'instantané de conteneur en tant qu'image. L'exemple suivant importe le fichier d'instantané ubuntu.tar dans l'image test/ubuntu:v1 :
$ cat docker/ubuntu.tar | docker import - test/ubuntu:v1
De plus, vous pouvez également importer en spécifiant une URL ou un répertoire, par exemple :
$ docker import http://example.com/exampleimage.tgz example/imagerepo
Supprimer un conteneur
Pour supprimer un conteneur, utilisez la commandedocker rm:
$ docker rm -f 1e560fca3906
La commande suivante peut nettoyer tous les conteneurs à l'état terminé.
$ docker container prune
Lancer une application web
Les conteneurs que nous avons exécutés précédemment n'avaient aucun but particulier.
Ensuite, essayons d'utiliser Docker pour construire une application web.
Nous allons exécuter une application Python Flask dans un conteneur Docker pour faire tourner une application web.
example@example:~# docker pull training/webapp # 载入镜像 example@example:~# docker run -d -P training/webapp python app.py

Description du paramètre :
-
-d:Exécutez le conteneur en arrière-plan.
-
-P:Mappez les ports réseau utilisés à l'intérieur du conteneur de manière aléatoire vers l'hôte que nous utilisons.
Affichez le conteneur de l'application web
Utilisez docker ps pour afficher les conteneurs que nous exécutons :
example@example:~# docker ps CONTAINER ID IMAGE COMMAND ... PORTS d3d5e39ed9d3 training/webapp "python app.py" ... 0.0.0.0:32769->5000/tcp
Ici, nous avons des informations supplémentaires sur les ports.
PORTS 0.0.0.0:32769->5000/tcp
Docker a ouvert le port 5000 (le port Python Flask par défaut) et l'a mappé sur le port 32769 de l'hôte.
À ce stade, nous pouvons accéder à l'application WEB via un navigateur.

Nous pouvons également utiliser le paramètre -p pour définir différents ports :
example@example:~$ docker run -d -p 5000:5000 training/webapp python app.py
docker psAfficher les conteneurs en cours d'exécution
example@example:~# docker ps CONTAINER ID IMAGE PORTS NAMES bf08b7f2cd89 training/webapp ... 0.0.0.0:5000->5000/tcp wizardly_chandrasekhar d3d5e39ed9d3 training/webapp ... 0.0.0.0:32769->5000/tcp xenodochial_hoov
Le port interne 5000 du conteneur est mappé sur le port 5000 de notre hôte local.
Raccourci de port réseau
Avecdocker ps, la commande permet de consulter les mappages de ports du conteneur.dockerIl fournit également un autre raccourcidocker port, utilisezdocker portVous pouvez consulter le port hôte vers lequel un port spécifique d’un conteneur spécifié (par ID ou nom) est mappé.
Le conteneur d'application web que nous avons créé ci-dessus a l'IDbf08b7f2cd89nomméwizardly_chandrasekhar。
Je peux utiliserdocker port bf08b7f2cd89oudocker port wizardly_chandrasekharpour consulter l'état du mappage des ports du conteneur.
example@example:~$ docker port bf08b7f2cd89 5000/tcp -> 0.0.0.0:5000
example@example:~$ docker port wizardly_chandrasekhar 5000/tcp -> 0.0.0.0:5000
Consulter les journaux de l'application web
docker logs [ID ou nom] permet de consulter la sortie standard depuis l'intérieur du conteneur.
example@example:~$ docker logs -f bf08b7f2cd89 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit) 192.168.239.1 - - [09/May/2016 16:30:37] "GET / HTTP/1.1" 200 - 192.168.239.1 - - [09/May/2016 16:30:37] "GET /favicon.ico HTTP/1.1" 404 -
-f:Utiliserdocker logséquivaut à utilisertail -fDe même, il affiche la sortie standard depuis l'intérieur du conteneur.
D'après ce qui précède, nous pouvons voir que l'application utilise le port 5000 et peut consulter les journaux d'accès de l'application.
Consulter les processus du conteneur de l'application web
Nous pouvons également utiliser docker top pour consulter les processus en cours d'exécution à l'intérieur du conteneur
example@example:~$ docker top wizardly_chandrasekhar UID PID PPID ... TIME CMD root 23245 23228 ... 00:00:00 python app.py
Inspecter l'application web
Utilisationdocker inspectPour consulter les informations sous-jacentes de Docker. Il renvoie un fichier JSON qui enregistre la configuration et les informations d'état du conteneur Docker.
example@example:~$ docker inspect wizardly_chandrasekhar
[
{
"Id": "bf08b7f2cd897b5964943134aa6d373e355c286db9b9885b1f60b6e8f82b2b85",
"Created": "2018-09-17T01:41:26.174228707Z",
"Path": "python",
"Args": [
"app.py"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 23245,
"ExitCode": 0,
"Error": "",
"StartedAt": "2018-09-17T01:41:26.494185806Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},
......
Arrêter le conteneur de l'application web
example@example:~$ docker stop wizardly_chandrasekhar wizardly_chandrasekhar
Redémarrer le conteneur de l'application web
Pour un conteneur déjà arrêté, nous pouvons utiliser la commande docker start pour le démarrer.
example@example:~$ docker start wizardly_chandrasekhar wizardly_chandrasekhar
docker ps -l interroge le conteneur créé la dernière fois :
# docker ps -l CONTAINER ID IMAGE PORTS NAMES bf08b7f2cd89 training/webapp ... 0.0.0.0:5000->5000/tcp wizardly_chandrasekhar
Pour les conteneurs en cours d'exécution, nous pouvons utiliserdocker restartla commande pour redémarrer.
Supprimer le conteneur de l'application web
Nous pouvons utiliser la commande docker rm pour supprimer les conteneurs inutiles.
example@example:~$ docker rm wizardly_chandrasekhar wizardly_chandrasekhar
Lors de la suppression d'un conteneur, le conteneur doit être à l'état arrêté, sinon l'erreur suivante sera signalée.
example@example:~$ docker rm wizardly_chandrasekhar Error response from daemon: You cannot remove a running container bf08b7f2cd897b5964943134aa6d373e355c286db9b9885b1f60b6e8f82b2b85. Stop the container before attempting removal or force removeautres extensions




