Comment installer et utiliser Docker sur Rocky Linux 9

De Get Docs
Aller à :navigation, rechercher

Introduction

Docker est une application qui simplifie et facilite l'exécution de processus d'application dans un conteneur, qui sont comme des machines virtuelles, mais 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, consultez The Docker Ecosystem: An Introduction to Common Components.

Dans ce didacticiel, vous apprendrez à l'installer et à l'utiliser sur une installation existante de Rocky Linux 9.

Conditions préalables

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é de sudo. Initial Setup Guide for Rocky Linux 9 explique comment ajouter des utilisateurs et leur donner un accès sudo.

Étape 1 - Installation de Docker

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

Mais d'abord, mettons à jour la base de données des packages :

sudo dnf check-update

Ensuite, ajoutez le dépôt Docker officiel :

sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

Bien qu'il n'y ait pas de référentiel spécifique à Rocky Linux de Docker, Rocky Linux est basé sur CentOS et peut utiliser le même référentiel. Une fois le référentiel ajouté, installez Docker, qui est composé de trois packages :

sudo dnf install docker-ce docker-ce-cli containerd.io

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

Le résultat doit ressembler à ce qui suit, indiquant 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 le docker utilitaire de ligne de commande ou le client Docker. Nous verrons comment utiliser le docker commande plus loin dans ce didacticiel.

Étape 2 - Exécution de la commande Docker sans Sudo (facultatif)

Par défaut, l'exécution du docker la commande nécessite des privilèges root - c'est-à-dire que vous devez préfixer la commande avec sudo. Il peut également être exécuté par un utilisateur du groupe docker, qui est automatiquement créé lors de l'installation de Docker. Si vous essayez d'exécuter le docker commande sans la préfixer avec sudo 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 voulez éviter de taper sudo chaque fois que vous exécutez le docker commande, ajoutez votre nom d'utilisateur au groupe docker :

sudo usermod -aG docker $(whoami)

Vous devrez vous déconnecter du droplet et vous reconnecter en tant que même utilisateur pour activer ce changement.

Si vous devez ajouter un utilisateur au docker groupe auquel vous n'êtes pas connecté, déclarez explicitement ce nom d'utilisateur en utilisant :

sudo usermod -aG docker username

Le rest de cet article suppose que vous exécutez le docker commande en tant qu'utilisateur du groupe d'utilisateurs docker. Si vous choisissez de ne pas le faire, veuillez faire précéder les commandes de sudo.

Étape 3 - Utilisation de la commande Docker

Avec Docker installé et fonctionnel, il est maintenant temps de se familiariser avec l'utilitaire de ligne de commande. Utilisant docker 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

Depuis 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

Étape 4 - Travailler avec 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. N'importe qui peut créer et héberger ses images Docker sur Docker Hub, de sorte que la plupart des applications et des distributions Linux dont vous aurez besoin pour exécuter des conteneurs Docker ont des images hébergées sur Docker Hub.

Pour vérifier si vous pouvez accéder et télécharger des images depuis Docker Hub, saisissez :

docker run hello-world

Le résultat, qui doit inclure les éléments suivants, doit 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 le docker commande avec le search sous-commande. Par exemple, pour rechercher l'image Rocky Linux, tapez :

docker search rockylinux

Le script explorera Docker Hub et renverra une liste de toutes les images dont le nom correspond à la chaîne de recherche. Dans ce cas, la sortie ressemblera à 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 colonne OFFICIAL, OK indique une image construite et soutenue par l'entreprise à l'origine du projet. Une fois que vous avez identifié l'image que vous souhaitez utiliser, vous pouvez la télécharger sur votre ordinateur en utilisant le pull sous-commande, comme ceci :

docker pull rockylinux

Une fois qu'une image a été téléchargée, vous pouvez ensuite exécuter un conteneur à l'aide de l'image téléchargée avec le run sous-commande. Si une image n'a pas été téléchargée lorsque docker est exécuté avec le run sous-commande, le client Docker téléchargera d'abord l'image, puis exécutera un conteneur en l'utilisant :

docker run rockylinux

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

docker images

Le résultat doit ressembler à ce qui suit :

[secondary_lable Output]
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
rockylinux              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 (poussé est le terme technique) vers Docker Hub ou d'autres Registres Docker.

Étape 5 - Exécution d'un conteneur Docker

La hello-world conteneur 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, ils sont similaires aux machines virtuelles, mais plus économes en ressources.

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

docker run -it rockylinux

Votre invite de commande devrait changer pour refléter le fait que vous travaillez maintenant à l'intérieur du conteneur et devrait prendre cette forme :

Output[[email protected] /]#

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

Vous pouvez maintenant 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 avec sudo, car vous travaillez à l'intérieur du conteneur avec des privilèges root :

dnf install mariadb-server

Étape 6 - Validation des modifications dans un conteneur sur une image Docker

Lorsque vous démarrez une image Docker, vous pouvez créer, modifier et supprimer des fichiers comme vous le feriez 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 le docker rm commande, les modifications seront perdues pour de bon.

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

Après avoir installé le serveur MariaDB dans le conteneur Rocky Linux, vous avez maintenant un conteneur fonctionnant à partir d'une image, mais le conteneur est différent de l'image que vous avez utilisée pour le créer.

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

exit

Validez ensuite 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 docker interactive. 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 sammy/rockylinux-mariadb

Remarque : Lorsque vous validez une image, la nouvelle image est enregistrée localement, c'est-à-dire sur votre ordinateur. Plus loin dans ce didacticiel, vous apprendrez à transférer 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.


Une fois cette opération terminée, la liste des images Docker maintenant sur votre ordinateur doit afficher la nouvelle image, ainsi que l'ancienne dont elle est dérivée :

docker images

La sortie devrait être de ce type :

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

Dans l'exemple ci-dessus, rockylinux-mariadb est la nouvelle image, dérivée de l'image Rocky Linux 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 à l'aide de Rocky Linux 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 Dockerfile. Mais c'est un processus très complexe qui dépasse largement le cadre de cet article. Nous explorerons cela dans un prochain article.

Étape 7 - Liste des conteneurs Docker

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

docker ps

Vous verrez une sortie semblable à la suivante :

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

Pour afficher tous les conteneurs (actifs et inactifs), transmettez-lui le -a changer:

docker ps -a

Pour afficher le dernier conteneur que vous avez créé, transmettez-lui le -l changer:

docker ps -l

Arrêter un conteneur en cours d'exécution ou actif est aussi simple que de taper :

docker stop container-id

Le container-id se trouve dans la sortie du docker ps commande.

É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, le monde entier sur Docker Hub ou un autre registre Docker auquel vous avez accès. Pour pousser une image vers Docker Hub ou tout autre registre Docker, vous devez y avoir un compte.

Cette section vous montre comment transférer une image Docker vers Docker Hub.

Pour créer un compte sur Docker Hub, inscrivez-vous sur 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

Il faudra un certain temps pour terminer, et une fois terminé, la sortie sera de ce type :

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

...

Après avoir poussé une image vers un registre, elle devrait être répertoriée sur le tableau de bord de votre compte, comme cela apparaît dans l'image ci-dessous.

Si une tentative de push aboutit à une erreur de ce type, vous ne vous êtes probablement pas connecté :

OutputThe push refers to a repository [docker.io/sammy/rockylinux-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 push.

Conclusion

Il y a beaucoup plus à Docker que ce qui a été donné dans cet article, mais cela devrait être suffisant pour vous permettre de commencer à travailler avec Rocky Linux 9. 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 la page de blog du projet pour les dernières informations.

Consultez également les autres didacticiels Docker dans la communauté DO.