Comment installer et utiliser Docker sur CentOS 7

introduction

Docker est une application qui simplifie et simplifie l’exécution de processus d’application dans un conteneur, qui sont comme des machines virtuelles, uniquement plus portables, plus respectueux des ressources et plus dépendants du système d’exploitation hôte. Pour une introduction détaillée aux différents composants d'un conteneur Docker, consultezThe Docker Ecosystem: An Introduction to Common Components.

Il existe deux méthodes pour installer Docker sur CentOS 7. Une méthode consiste à l'installer sur une installation existante du système d'exploitation. L'autre consiste à faire tourner un serveur avec un outil appeléDocker Machine qui installe automatiquement Docker dessus.

Dans ce didacticiel, vous apprendrez à l’installer et à l’utiliser sur une installation existante de CentOS 7.

Conditions préalables

  • DropOS CentOS 7 64 bits

  • Utilisateur non root avec privilèges sudo. Un serveur CentOS 7 configuré à l'aide deInitial Setup Guide for CentOS 7 explique comment le configurer.

[.note] #Note: Docker nécessite une version 64 bits de CentOS 7 ainsi qu'une version du noyau égale ou supérieure à 3.10. Le droplet CentOS 7 64 bits par défaut répond à ces exigences.
#

Toutes les commandes de ce didacticiel doivent être exécutées en tant qu'utilisateur non root. Si un accès root est requis pour la commande, il sera précédé desudo. Initial Setup Guide for CentOS 7 explique comment ajouter des utilisateurs et leur donner un accès sudo.

[[step-1 -—- Installing-docker]] == Étape 1 - Installation de Docker

Le package d'installation de Docker disponible dans le référentiel officiel CentOS 7 peut ne pas être la dernière version. Pour obtenir la version la plus récente et la meilleure, installez Docker à partir du référentiel officiel de Docker. Cette section vous montre comment faire exactement cela.

Mais d’abord, mettons à jour la base de données de paquets:

sudo yum check-update

Maintenant, lancez cette commande. Il ajoutera le référentiel officiel de Docker, téléchargera la dernière version de Docker et l'installera:

curl -fsSL https://get.docker.com/ | sh

Une fois l'installation terminée, démarrez le démon Docker:

sudo systemctl start docker

Vérifiez qu’il est en cours d’exécution:

sudo systemctl status docker

La sortie devrait être semblable à celle-ci, montrant que le service est actif et en cours d'exécution:

Output● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2016-05-01 06:53:52 CDT; 1 weeks 3 days ago
     Docs: https://docs.docker.com
 Main PID: 749 (docker)

Enfin, assurez-vous qu'il démarre à chaque redémarrage du serveur:

sudo systemctl enable docker

L'installation de Docker vous donne désormais non seulement le service Docker (démon), mais également l'utilitaire de ligne de commandedocker ou le client Docker. Nous verrons comment utiliser la commandedocker plus loin dans ce didacticiel.

[[step-2 -—- executing-docker-command-without-sudo-optional]] == Étape 2 - Exécution de la commande Docker sans Sudo (optionnel)

Par défaut, l'exécution de la commandedocker nécessite des privilèges root, c'est-à-dire que vous devez préfixer la commande avecsudo. Il peut également être exécuté par un utilisateur du groupedocker, qui est automatiquement créé lors de l'installation de Docker. Si vous essayez d'exécuter la commandedocker sans la préfixer avecsudo ou sans être dans le groupe docker, vous obtiendrez une sortie comme celle-ci:

Outputdocker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?.
See 'docker run --help'.

Si vous souhaitez éviter de tapersudo chaque fois que vous exécutez la commandedocker, ajoutez votre nom d'utilisateur au groupe de menus fixes:

sudo usermod -aG docker $(whoami)

Vous devrez vous déconnecter de Droplet et vous reconnecter en tant que même utilisateur pour activer cette modification.

Si vous devez ajouter un utilisateur au groupedocker avec lequel vous n'êtes pas connecté, déclarez ce nom d'utilisateur explicitement en utilisant:

sudo usermod -aG docker username

Le reste de cet article suppose que vous exécutez la commandedocker en tant qu'utilisateur dans le groupe d'utilisateurs docker. Si vous choisissez de ne pas le faire, veuillez ajouter les commandes avecsudo.

[[step-3 -—- using-the-docker-command]] == Étape 3 - Utilisation de la commande Docker

Avec Docker installé et opérationnel, il est maintenant temps de vous familiariser avec l’utilitaire de ligne de commande. Utiliserdocker consiste à lui passer une chaîne d'options et de sous-commandes suivies d'arguments. La syntaxe prend cette forme:

docker [option] [command] [arguments]

Pour afficher toutes les sous-commandes disponibles, tapez:

docker

A partir de Docker 1.11.1, la liste complète des sous-commandes disponibles comprend:

Output
    attach    Attach to a running container
    build     Build an image from a Dockerfile
    commit    Create a new image from a container's changes
    cp        Copy files/folders between a container and the local filesystem
    create    Create a new container
    diff      Inspect changes on a container's filesystem
    events    Get real time events from the server
    exec      Run a command in a running container
    export    Export a container's filesystem as a tar archive
    history   Show the history of an image
    images    List images
    import    Import the contents from a tarball to create a filesystem image
    info      Display system-wide information
    inspect   Return low-level information on a container or image
    kill      Kill a running container
    load      Load an image from a tar archive or STDIN
    login     Log in to a Docker registry
    logout    Log out from a Docker registry
    logs      Fetch the logs of a container
    network   Manage Docker networks
    pause     Pause all processes within a container
    port      List port mappings or a specific mapping for the CONTAINER
    ps        List containers
    pull      Pull an image or a repository from a registry
    push      Push an image or a repository to a registry
    rename    Rename a container
    restart   Restart a container
    rm        Remove one or more containers
    rmi       Remove one or more images
    run       Run a command in a new container
    save      Save one or more images to a tar archive
    search    Search the Docker Hub for images
    start     Start one or more stopped containers
    stats     Display a live stream of container(s) resource usage statistics
    stop      Stop a running container
    tag       Tag an image into a repository
    top       Display the running processes of a container
    unpause   Unpause all processes within a container
    update    Update configuration of one or more containers
    version   Show the Docker version information
    volume    Manage Docker volumes
    wait      Block until a container stops, then print its exit code

Pour afficher les commutateurs disponibles pour une commande spécifique, tapez:

docker docker-subcommand --help

Pour afficher des informations sur l'ensemble du système, utilisez:

docker info

[[step-4 -—- working-with-docker-images]] == Étape 4 - Utilisation des images Docker

Les conteneurs Docker sont exécutés à partir d'images Docker. Par défaut, il extrait ces images de Docker Hub, un registre Docker géré par Docker, la société à l'origine du projet Docker. Tout le monde peut créer et héberger ses images Docker sur Docker Hub. Ainsi, la plupart des applications et des distributions Linux sur lesquelles vous devez exécuter des conteneurs Docker ont des images hébergées sur Docker Hub.

Pour vérifier si vous pouvez accéder aux images et les télécharger à partir de Docker Hub, tapez:

docker run hello-world

La sortie, qui devrait inclure les éléments suivants, devrait indiquer que Docker fonctionne correctement:

OutputHello from Docker.
This message shows that your installation appears to be working correctly.
...

Vous pouvez rechercher des images disponibles sur Docker Hub en utilisant la commandedocker avec la sous-commandesearch. Par exemple, pour rechercher l'image CentOS, tapez:

docker search centos

Le script analysera Docker Hub et renverra une liste de toutes les images dont le nom correspond à la chaîne de recherche. Dans ce cas, le résultat sera similaire à ceci:

OutputNAME                            DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
centos                          The official build of CentOS.                   2224      [OK]
jdeathe/centos-ssh              CentOS-6 6.7 x86_64 / CentOS-7 7.2.1511 x8...   22                   [OK]
jdeathe/centos-ssh-apache-php   CentOS-6 6.7 x86_64 / Apache / PHP / PHP M...   17                   [OK]
million12/centos-supervisor     Base CentOS-7 with supervisord launcher, h...   11                   [OK]
nimmis/java-centos              This is docker images of CentOS 7 with dif...   10                   [OK]
torusware/speedus-centos        Always updated official CentOS docker imag...   8                    [OK]
nickistre/centos-lamp           LAMP on centos setup                            3                    [OK]

...

Dans la colonneOFFICIAL,OK indique une image construite et prise en charge par l'entreprise derrière le projet. Une fois que vous avez identifié l'image que vous souhaitez utiliser, vous pouvez la télécharger sur votre ordinateur à l'aide de la sous-commandepull, comme suit:

docker pull centos

Une fois qu'une image a été téléchargée, vous pouvez alors exécuter un conteneur en utilisant l'image téléchargée avec la sous-commanderun. Si une image n'a pas été téléchargée lorsquedocker est exécuté avec la sous-commanderun, le client Docker téléchargera d'abord l'image, puis exécutera un conteneur en l'utilisant:

docker run centos

Pour voir les images téléchargées sur votre ordinateur, tapez:

docker images

La sortie devrait ressembler à ceci:

[secondary_lable Output]
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              778a53015523        5 weeks ago         196.7 MB
hello-world         latest              94df4f0ce8a4        2 weeks ago         967 B

Comme vous le verrez plus loin dans ce didacticiel, les images que vous utilisez pour exécuter des conteneurs peuvent être modifiées et utilisées pour générer de nouvelles images, qui peuvent ensuite être téléchargées (pushed est le terme technique) vers Docker Hub ou d'autres registres Docker .

[[step-5 -—- running-a-docker-container]] == Étape 5 - Exécution d'un Docker Container

Le conteneurhello-world que vous avez exécuté à l'étape précédente est un exemple de conteneur qui s'exécute et se ferme après avoir émis un message de test. Les conteneurs, cependant, peuvent être beaucoup plus utiles que cela, et ils peuvent être interactifs. Après tout, elles ressemblent aux machines virtuelles, mais elles sont plus conviviales.

Par exemple, exécutons un conteneur en utilisant la dernière image de CentOS. La combinaison des commutateurs-i et-t vous donne un accès interactif au shell dans le conteneur:

docker run -it centos

Votre invite de commande doit changer pour refléter le fait que vous travaillez maintenant dans le conteneur et doit prendre la forme suivante:

Output[root@59839a1b7de2 /]#

Important: Notez l'ID du conteneur dans l'invite de commande. Dans l'exemple ci-dessus, il s'agit de59839a1b7de2.

Maintenant, vous pouvez exécuter n'importe quelle commande à l'intérieur du conteneur. Par exemple, installons le serveur MariaDB dans le conteneur en cours d’exécution. Pas besoin de préfixer une commande avecsudo, car vous travaillez à l'intérieur du conteneur avec les privilèges root:

yum install mariadb-server

[[step-6 -—- committing-changes-in-a-container-to-a-docker-image]] == Étape 6 - Validation des modifications d'un conteneur dans une image Docker

Lorsque vous démarrez une image Docker, vous pouvez créer, modifier et supprimer des fichiers comme vous le pouvez avec une machine virtuelle. Les modifications que vous apportez ne s'appliqueront qu'à ce conteneur. Vous pouvez le démarrer et l'arrêter, mais une fois que vous l'avez détruit avec la commandedocker rm, les modifications seront définitivement perdues.

Cette section explique comment enregistrer l'état d'un conteneur en tant que nouvelle image Docker.

Après avoir installé le serveur MariaDB dans le conteneur CentOS, vous disposez maintenant d'un conteneur exécutant une image, mais le conteneur est différent de l'image que vous avez utilisée pour la créer.

Pour enregistrer l'état du conteneur en tant que nouvelle image, quittez-le d'abord:

exit

Puis validez les modifications dans une nouvelle instance d'image Docker à l'aide de la commande suivante. Le commutateur-m est pour le message de validation qui vous aide, vous et les autres, à savoir quelles modifications vous avez apportées, tandis que-a est utilisé pour spécifier l'auteur. L'ID de conteneur est celui que vous avez noté précédemment dans le didacticiel lorsque vous avez démarré la session de menu fixe interactif. Sauf si vous avez créé des référentiels supplémentaires sur Docker Hub, le référentiel est généralement votre nom d'utilisateur Docker Hub:

docker commit -m "What did you do to the image" -a "Author Name" container-id repository/new_image_name

Par exemple:

docker commit -m "added mariadb-server" -a "Sunday Ogwu-Chinuwa" 59839a1b7de2 finid/centos-mariadb

[.note] #Note: Lorsque vouscommit une image, la nouvelle image est enregistrée localement, c'est-à-dire sur votre ordinateur. Plus loin dans ce didacticiel, vous apprendrez à pousser une image vers un registre Docker tel que Docker Hub afin qu'elle puisse être évaluée et utilisée par vous et d'autres personnes.
#

Une fois cette opération terminée, la liste des images Docker maintenant sur votre ordinateur devrait afficher la nouvelle image, ainsi que l’ancienne image à partir de laquelle elle a été obtenue:

docker images

La sortie devrait être de cette sorte:

OutputREPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
finid/centos-mariadb   latest              23390430ec73        6 seconds ago       424.6 MB
centos                 latest              778a53015523        5 weeks ago         196.7 MB
hello-world            latest              94df4f0ce8a4        2 weeks ago         967 B

Dans l'exemple ci-dessus,centos-mariadb est la nouvelle image, qui a été dérivée de l'image CentOS existante de Docker Hub. La différence de taille reflète les modifications apportées. Et dans cet exemple, le changement était que le serveur MariaDB était installé. Ainsi, la prochaine fois que vous devrez exécuter un conteneur avec CentOS avec le serveur MariaDB pré-installé, vous pourrez simplement utiliser la nouvelle image. Les images peuvent également être construites à partir de ce qu’on appelle un fichier Docker. Mais c’est un processus très complexe qui dépasse le cadre de cet article. Nous allons explorer cela dans un prochain article.

[[step-7 -—- listing-docker-containers]] == Étape 7 - Listage des conteneurs Docker

Après avoir utilisé Docker pendant un certain temps, de nombreux conteneurs actifs (en cours d'exécution) et inactifs sont installés sur votre ordinateur. Pour voir les actifs, utilisez:

docker ps

Vous verrez une sortie semblable à celle-ci:

OutputCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
f7c79cc556dd        centos              "/bin/bash"         3 hours ago         Up 3 hours                              silly_spence

Pour afficher tous les conteneurs - actifs et inactifs, passez-lui le commutateur-a:

docker ps -a

Pour afficher le dernier conteneur que vous avez créé, passez-lui le commutateur-l:

docker ps -l

Arrêter un conteneur actif ou actif est aussi simple que de taper:

docker stop container-id

Lescontainer-id se trouvent dans la sortie de la commandedocker ps.

[[step-8 -—- pushing-docker-images-to-a-docker-repository]] == Étape 8 - Pousser des images Docker vers un référentiel Docker

La prochaine étape logique après la création d'une nouvelle image à partir d'une image existante consiste à la partager avec quelques-uns de vos amis, avec le monde entier sur Docker Hub ou avec un autre registre Docker auquel vous avez accès. Pour envoyer une image vers Docker Hub ou tout autre registre Docker, vous devez avoir un compte là-bas.

Cette section explique comment transférer une image Docker vers le hub Docker.

Pour créer un compte sur Docker Hub, inscrivez-vous àDocker Hub. Ensuite, pour pousser votre image, connectez-vous d'abord à Docker Hub. Vous serez invité à vous authentifier:

docker login -u docker-registry-username

Si vous avez spécifié le mot de passe correct, l'authentification devrait réussir. Ensuite, vous pouvez pousser votre propre image en utilisant:

docker push docker-registry-username/docker-image-name

Cela prendra un certain temps et une fois terminé, le résultat sera de ce type:

OutputThe push refers to a repository [docker.io/finid/centos-mariadb]
670194edfaf5: Pushed
5f70bf18a086: Mounted from library/centos
6a6c96337be1: Mounted from library/centos

...

Après avoir transféré une image dans un registre, celle-ci doit être répertoriée dans le tableau de bord de votre compte, comme indiqué dans l'image ci-dessous.

Docker image listing on Docker Hub

Si une tentative de poussée entraîne une erreur de ce type, vous ne vous êtes probablement pas connecté:

OutputThe push refers to a repository [docker.io/finid/centos-mariadb]
e3fbbfb44187: Preparing
5f70bf18a086: Preparing
a3b5c80a4eba: Preparing
7f18b442972b: Preparing
3ce512daaf78: Preparing
7aae4540b42d: Waiting
unauthorized: authentication required

Connectez-vous, puis répétez la tentative de poussée.

Conclusion

Docker offre bien plus que ce qui a été expliqué dans cet article, mais cela devrait suffire à vous permettre de commencer à travailler avec CentOS 7. Comme la plupart des projets open source, Docker est construit à partir d'une base de code en développement rapide, alors prenez l'habitude de visiter lesblog page du projet pour obtenir les dernières informations.

Consultez également lesother Docker tutorials dans la communauté DO.