English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Utilisation des conteneurs Docker

Client Docker

Le client Docker est très simple, nous pouvons directement entrer la commande docker pour voir toutes les options de commande du client Docker.

w3codebox@w3codebox:~# docker

Il est possible de passer la commande commande docker --help Pour une compréhension plus approfondie de la méthode d'utilisation spécifique des commandes Docker.

Par exemple, pour afficher docker stats Méthode d'utilisation spécifique de l'instruction :

w3codebox@w3codebox:~# docker stats --help

Utilisation du conteneur

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

Les commandes suivantes utilisent l'image ubuntu pour démarrer un conteneur, le paramètre est d'entrer dans le conteneur en mode ligne de commande :

$ docker run -it ubuntu /bin/bash

Explication des paramètres :

  • -i: opérations interactives.

  • -t: terminal.

  • ubuntu: image ubuntu.

  • /bin/bash:Ce qui est placé après le nom de l'image est une commande, ici nous souhaitons avoir un Shell interactif, donc nous utilisons /bin/bash。

Pour quitter le terminal, entrez directement exit:

root@ed09e4490c57:/# exit

Redémarrer un conteneur arrêté

Voici la commande pour afficher tous les conteneurs :

$ docker ps -a

Cliquez sur l'image pour afficher la grande image :

Utilisez la commande docker start pour redémarrer un conteneur arrêté :

$ docker start b750bbbcfd88

exécution en arrière-plan

Dans la plupart des scénarios, nous souhaitons que le service Docker fonctionne en arrière-plan, nous pouvons passer -d spécifie le mode de fonctionnement du conteneur.

$ docker run -itd --name ubuntu-test ubuntu /bin/bash

Cliquez sur l'image pour afficher la grande image :

Note :ajouté -Le paramètre d par défaut n'entrera pas dans le conteneur, pour entrer dans le conteneur, vous devez utiliser l'instruction docker exec(ci-après expliqué)。

Arrêter un conteneur

La commande pour arrêter un conteneur est la suivante :

$ docker stop <ID du conteneur>

Les conteneurs arrêtés peuvent être redémarrés avec la commande docker restart :

$ docker restart <ID du conteneur>

entrer dans le conteneur

lors de l'utilisation -d lors de l'exécution des paramètres, le conteneur entrera en arrière-plan après le lancement. Si vous souhaitez entrer dans le conteneur à ce moment-là, vous pouvez utiliser les instructions suivantes pour entrer :

  • docker attach

  • docker exec:Recommandons à tous d'utiliser la commande docker exec, car cette sortie du terminal du conteneur ne provoquera pas l'arrêt du conteneur.

Commande attach

Voici un exemple de démonstration de l'utilisation de la commande docker attach.

$ docker attach 1e560fca3906

Attention : Si vous quittez ce conteneur, cela entraînera l'arrêt du conteneur.

Commande exec

Voici un exemple de démonstration de l'utilisation de la commande docker exec.

docker exec -it 243c32535da7 /bin/bash

Attention : Si vous quittez ce conteneur, le conteneur ne s'arrêtera pas, c'est pourquoi il est recommandé d'utiliser docker exec pourquoi.

Pour plus de détails sur les paramètres, utilisez docker exec --Commande help pour voir.

Exportation et importation de conteneurs

Exporter le conteneur

Si vous souhaitez exporter un conteneur local, vous pouvez utiliser docker export Commande :

$ docker export 1e560fca3906 > ubuntu.tar

Exporter le conteneur 1e560fca3906 Capture vers le fichier local  ubuntu.tar。

De cette manière, vous exporterez la capture de conteneur vers un fichier local.

Importer une capture de conteneur

Vous pouvez utiliser docker import pour importer à partir d'un fichier de capture de conteneur en tant qu'image, l'exemple suivant importe le fichier de capture 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 le conteneur

Utilisation pour supprimer un conteneur docker rm Commande :

$ docker rm -f 1e560fca3906

Les commandes suivantes peuvent nettoyer tous les conteneurs en état de terminaison.

$ docker container prune

Exécuter une application web

Le conteneur que nous avons exécuté précédemment n'a pas de fonction particulière.

Essayons maintenant de construire une application web en utilisant docker.

Nous allons exécuter une application Python Flask dans un conteneur docker pour exécuter une application web.

w3codebox@w3codebox:~# docker pull training/webapp  # Charger l'image
w3codebox@w3codebox:~# docker run -d -P training/webapp python app.py

Explication des paramètres:

  • -d:Laissez le conteneur s'exécuter en arrière-plan.

  • -P:Mappez les ports réseau internes du conteneur de manière aléatoire sur notre hôte.

Voir le conteneur d'application WEB

使用 docker ps 来查看我们正在运行的容器:

w3codebox@w3codebox:~# docker ps
CONTAINER ID        IMAGE               COMMAND             ...        PORTS                 
d3d5e39ed9d3        training/webapp     "python app.py"     ...        0.0.0.0:32769->5000/tcp

webapp "python app.py" ... 0.0.0.0:

Il y a plus d'informations sur les ports ici.
0.0.0.0:32769->5000/tcp

PORTS 5Docker a ouvert 32769 000 port (port par défaut de Python Flask) est mappé sur le port de l'hôte

Nous pouvons également accéder à l'application WEB via le navigateur -p paramètre pour définir un port différent :

w3codebox@w3codebox:~$ docker run -d -p 5000:5000 training/webapp python app.py

docker psVoir les conteneurs en cours d'exécution

w3codebox@w3codebox:~# 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

à l'intérieur du conteneur 5000 port est mappé sur notre hôte local 5000 port sur lequel l'application s'exécute.

le raccourci du port réseau

par docker ps La commande permet de voir les mappages des ports du conteneur,docker Il fournit également un raccourci docker port,utilisez docker port Il est possible de voir un port spécifique (ID ou nom) du conteneur mappé au numéro de port de l'hôte.

Nous avons créé le conteneur d'application WEB ci-dessus avec l'ID bf08b7f2cd89  Le nom est wizardly_chandrasekhar.

Je peux utiliser docker port bf08b7f2cd89  ou docker port wizardly_chandrasekhar pour voir les mappages des ports du conteneur.

w3codebox@w3codebox:~$ docker port bf08b7f2cd89
5000/tcp -> 0.0.0.0:5000
w3codebox@w3codebox:~$ docker port wizardly_chandrasekhar
5000/tcp -> 0.0.0.0:5000

Voir les journaux de l'application WEB

docker logs [ID ou nom] permet de voir la sortie standard à l'intérieur du conteneur.

w3codebox@w3codebox:~$ docker logs -f bf08b7f2cd89
 * En cours d'exécution sur http://0.0.0.0:5000/ (Appuyez sur CTRL+C pour quitter)
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: permet docker logs comme tail -f de la même manière pour afficher la sortie standard à l'intérieur du conteneur.

De haut en bas, nous pouvons voir que l'application utilise 5000 端口并且能够查看到应用程序的访问日志。

查看WEB应用程序容器的进程

我们还可以使用 docker top 来查看容器内部运行的进程

w3codebox@w3codebox:~$ docker top wizardly_chandrasekhar
UID     PID         PPID         ...       TIME               CMD
root    23245       23228         ...       00:00:00           python app.py

检查 WEB 应用程序

使用 docker inspect 来查看 Docker 的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息。

w3codebox@w3codebox:~$ docker inspect wizardly_chandrasekhar
[
    {
        "Id": "bf0"8b7f2cd897b5964943134aa6d373e355c286db9b9885b1f60b6e8f82b2b85,
        "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"
        }
......

停止 WEB 应用容器

w3codebox@w3codebox:~$ docker stop wizardly_chandrasekhar   
wizardly_chandrasekhar

重启WEB应用容器

已经停止的容器,我们可以使用命令 docker start 来启动。

w3codebox@w3codebox:~$ docker start wizardly_chandrasekhar
wizardly_chandrasekhar

docker ps -l 查询最后一次创建的容器:

# 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 utiliser la commande docker restart pour redémarrer.

Suppression du conteneur de l'application WEB

Nous pouvons utiliser la commande docker rm pour supprimer les conteneurs inutiles

w3codebox@w3codebox:~$ docker rm wizardly_chandrasekhar  
wizardly_chandrasekhar

Lorsque vous supprimez un conteneur, le conteneur doit être en état arrêté, sinon vous recevrez l'erreur suivante

w3codebox@w3codebox:~$ docker rm wizardly_chandrasekhar
Réponse d'erreur du démon : Vous ne pouvez pas supprimer un conteneur en cours d'exécution bf08b7f2cd897b5964943134aa6d373e355c286db9b9885b1f60b6e8f82b2b85Arrêter le conteneur avant de tenter de le supprimer ou de le supprimer强制