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.
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.