Docker est une application qui simplifie le processus de gestion des processus d'application dans des conteneurs. Les conteneurs vous permettent d'exécuter des applications dans des processus isolés par des ressources. Ils sont similaires aux machines virtuelles, mais les conteneurs sont plus faciles à transplanter, utilisent moins de ressources et dépendent davantage des ressources du système hôte.
Dans cet article, Docker Community Edition (CE) sera installé et utilisé sur Ubuntu 20.04. Utilisez simplement simultanément le conteneur et l'image, puis poussez l'image vers le référentiel Docker.
Cet article suppose que vous disposez d'un compte d'utilisateur avec des privilèges de groupe sudo, mais pas root.
Sinon, créez-en un sous la racine
adduser sammy
usermod -aG sudo sammy
Cela crée un utilisateur avec des privilèges sudo
1: Installez Docker
Mettez d'abord à jour tous les packages d'installation:
mise à jour sudo apt
Ensuite, installez quelques packages prérequis pour utiliser le package via HTTPS:
sudo apt install apt-transport-https ca-certificates curl software-properties-common
Ajoutez la clé GPG du référentiel Docker officiel au système:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add-
Ajoutez le référentiel Docker à la source APT:
sudo add-apt-repository "deb [arch = amd64] https://download.docker.com/linux/ubuntu focal stable"
Mettez à jour la base de données du package avec le package Docker dans l'entrepôt nouvellement ajouté:
sudo apt update
Assurez-vous que vous souhaitez installer à partir du référentiel Docker au lieu du référentiel Ubuntu par défaut:
apt-cache policy docker-ce
Enfin, docker est effectivement installé
sudo apt installer docker-ce
docker est maintenant installé, le démon est démarré et le processus sera lancé la prochaine fois que le système sera activé. Vérifiez s'il est en cours d'exécution:
menu fixe de statut sudo systemctl
peut être vu:
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2021-02-20 18:05:52 UTC; 5min ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 11985 (dockerd)
Tasks: 8
Memory: 39.4M
CGroup: /system.slice/docker.service
└─11985 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
...
2: Exécuter les commandes Docker sans sudo
Par défaut, vous ne pouvez exécuter des commandes docker qu'en tant qu'utilisateur root ou en tant qu'utilisateurs dans le groupe Docker, et le groupe Docker est automatiquement créé pendant le processus d'installation Docker. Afin de ne pas utiliser le préfixe sudo, vous devez rejoindre le groupe doccker:
sudo usermod -aG docker $ {USER}
doit se déconnecter, puis se connecter à ces informations de groupe pour prendre effet. Ou c'est bien aussi. Je me suis déconnecté puis connecté. Je n'ai pas essayé les méthodes suivantes.
su - $ {USER}
La commande pour vérifier dans quel groupe vous êtes est:
id -nG
Les informations suivantes doivent être affichées
sammy sudo docker
Si vous ajoutez quelqu'un au groupe docker, utilisez la commande suivante, où username est le nom d'utilisateur de quelqu'un d'autre
sudo usermod -aG docker username
La commande docker utilisée plus loin dans cet article suppose que vous êtes dans le groupe docker, sinon sudo
3: utiliser les commandes Docker
L'utilisation de docker implique de lui transmettre une série d'options et de commandes, suivies de paramètres. La grammaire prend la forme suivante:
docker [option] [commande] [arguments]
Pour afficher toutes les sous-commandes disponibles, tapez:
docker
Pour voir les options disponibles pour une commande spécifique, tapez:
docker docker-subcommand --help
La commande suivante pour afficher les informations système du
docker : infos sur le docker
4, Image Docker
Les conteneurs Docker sont créés à partir d'images Docker. Par défaut, Docker extrait ces images de Docker Hub, qui est un registre Docker géré par Docker, la société derrière le projet Docker. Tout le monde peut héberger ses images Docker sur Docker Hub, de sorte que la plupart des applications et distributions Linux dont vous avez besoin hébergeront les images.
Testons un simple bonjour-monde:
docker exécuter bonjour le monde
Des informations similaires aux suivantes doivent être affichées:
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:6a65f928fb91fcfbc963f7aa6d57c8eeb426ad9a20c7ee045538ef34847f44f1
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
Docker était initialement incapable de trouver l'image hello-world localement, il a donc téléchargé l'image à partir du référentiel par défaut Docker Hub. Après avoir téléchargé l'image, Docker créera un conteneur basé sur l'image, exécutera l'application dans le conteneur et affichera un message.
Vous pouvez utiliser la commande docker et la sous-commande de recherche pour rechercher des images disponibles sur Docker Hub. Par exemple, pour rechercher des images Ubuntu, entrez:
recherche docker ubuntu
Dans la colonne OFFICIEL, OK représente une image construite et soutenue par l'entreprise derrière le projet. Après avoir déterminé l'image que vous souhaitez utiliser, vous pouvez utiliser la sous-commande pull pour la télécharger sur votre ordinateur.
Exécutez la commande suivante pour télécharger l'image officielle ubuntu vers le local:
docker pull ubuntu
Après avoir téléchargé l'image, vous pouvez utiliser l'image téléchargée avec la sous-commande run pour exécuter le conteneur. Comme le montre l'exemple hello-world, si l'image n'est pas téléchargée lors de l'exécution de docker avec la sous-commande run, le client Docker télécharge d'abord l'image, puis utilise l'image pour exécuter le conteneur.
Pour afficher l'image qui a été téléchargée sur l'ordinateur, tapez:
images de docker
Les informations affichées sont les suivantes:
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest f63181f19b2f 4 weeks ago 72.9MB
hello-world latest bf756fb1ae65 13 months ago 13.3kB
5: conteneur Docker
Le conteneur hello-world exécuté à l'étape précédente est un exemple de conteneur qui s'exécute et se ferme après l'émission d'un message de test. Les conteneurs peuvent être beaucoup plus utiles que cela et ils peuvent être interactifs. Après tout, ils sont similaires aux machines virtuelles, mais sont plus respectueux des ressources.
Par exemple, exécutons un conteneur en utilisant la dernière image d'Ubuntu. La combinaison des commutateurs -i et -t vous permet d'accéder de manière interactive au shell:
docker exécuter -it ubuntu
Ensuite, il y a l'affichage suivant, et entrez l'ubuntu du conteneur
leon@ubuntu-s-1vcpu-1gb-tor1-01:~$ docker run -it ubuntu
root@bd612e776819:/#
Mettez d'abord à jour la liste des packages:
root@bd612e776819:/# apt update
Get:1 http://security.ubuntu.com/ubuntu focal-security InRelease [109 kB]
Par exemple, installez nodejs
root@bd612e776819:/# apt install nodejs
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
Ensuite, vérifiez la version du nœud:
root@bd612e776819:/# node -v
v10.19.0
Toutes les opérations concernent uniquement ce conteneur.
Pour quitter, saisissez:
sortir
root@bd612e776819:/# exit
exit
leon@ubuntu-s-1vcpu-1gb-tor1-01:~$
6: Gérer les conteneurs Docker
Après avoir utilisé Docker pendant un certain temps, il y aura de nombreux conteneurs actifs (en cours d'exécution) et inactifs sur votre ordinateur. Pour afficher l'activité, utilisez:
docker ps
Je n'ai aucune activité ici, donc c'est affiché comme ceci:
leon@ubuntu-s-1vcpu-1gb-tor1-01:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Pour afficher tous les conteneurs, procédez comme
suit : docker ps -a
L'affichage est comme ceci:
leon@ubuntu-s-1vcpu-1gb-tor1-01:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bd612e776819 ubuntu "/bin/bash" 53 minutes ago Exited (0) 22 minutes ago gallant_visvesvaraya
bdbf06b1c3bc hello-world "/hello" About an hour ago Exited (0) About an hour ago nifty_benz
Pour afficher les conteneurs récemment créés, utilisez -l
docker ps -l
Pour démarrer un conteneur arrêté, utilisez docker start suivi de l'ID du conteneur ou du nom du conteneur. Commençons le conteneur basé sur Ubuntu avec l'ID bdbf06b1c3bc:
docker start bdbf06b1c3bc
Cet ID est différent, comme vous pouvez le voir dans la vue docker ps -a, ce qui suit est après le démarrage, puis utilisez docker ps pour afficher:
docker start bd612e776819
bd612e776819
leon@ubuntu-s-1vcpu-1gb-tor1-01:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bd612e776819 ubuntu "/bin/bash" About an hour ago Up 7 seconds gallant_visvesvaraya
Pour arrêter un conteneur en cours d'exécution, utilisez docker stop suivi de l'ID ou du nom du conteneur. Cette fois, nous utiliserons le nom de conteneur gallant_visvesvaraya attribué par Docker:
docker stop gallant_visvesvaraya
Après avoir confirmé que le conteneur n'est plus nécessaire, utilisez la commande docker rm pour le supprimer à nouveau à l'aide de l'ID ou du nom du conteneur. Utilisez la commande docker ps -a pour rechercher l'ID de conteneur ou le nom du conteneur associé à l'image hello-world et supprimez-le.
docker rm nifty_benz
Ce qui suit est le processus de vérification avec ps -a d'abord, et de vérification après rm. nifty_benz est le nom que ps voit, chacun est différent.
leon@ubuntu-s-1vcpu-1gb-tor1-01:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bd612e776819 ubuntu "/bin/bash" 6 hours ago Exited (0) About a minute ago gallant_visvesvaraya
bdbf06b1c3bc hello-world "/hello" 6 hours ago Exited (0) 5 hours ago nifty_benz
leon@ubuntu-s-1vcpu-1gb-tor1-01:~$ docker rm nifty_benz
nifty_benz
leon@ubuntu-s-1vcpu-1gb-tor1-01:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bd612e776819 ubuntu "/bin/bash" 6 hours ago Exited (0) 2 minutes ago gallant_visvesvaraya
leon@ubuntu-s-1vcpu-1gb-tor1-01:~$
Vous pouvez démarrer un nouveau conteneur et le nommer avec le commutateur --name. Vous pouvez également utiliser le commutateur --rm pour créer un conteneur, qui sera supprimé lorsqu'il s'arrêtera. Pour plus d'informations sur ces options et d'autres, consultez la commande docker run help.
Les conteneurs peuvent être convertis en images et peuvent être utilisés pour créer de nouveaux conteneurs. Voyons comment cela fonctionne.
7: Valider les modifications dans le conteneur
Lorsque vous démarrez une image Docker, vous pouvez créer, modifier et supprimer des fichiers comme en utilisant une machine virtuelle. Les modifications apportées ne seront appliquées qu'à ce conteneur. Il peut être démarré et arrêté, mais une fois détruit avec la commande docker rm, les modifications seront définitivement perdues.
Cette section explique comment enregistrer l'état du conteneur en tant que nouvelle image Docker.
Après avoir installé Node.js dans le conteneur Ubuntu, il existe désormais un conteneur pour exécuter l'image, mais le conteneur est différent de l'image utilisée pour la créer. Mais à l'avenir, vous souhaiterez peut-être réutiliser ce conteneur Node.js comme base pour une nouvelle image.
Utilisez ensuite la commande suivante pour valider les modifications dans la nouvelle instance d'image Docker.
docker commit -m "Ce que vous avez fait à l'image" -a "Nom de l'auteur" container_id repository / new_image_name
Le commutateur -m est utilisé pour soumettre un message, ce qui vous aide, ainsi que les autres, à connaître les modifications que vous avez apportées, et -a est utilisé pour spécifier l'auteur. Le container_id est celui que vous avez noté lorsque vous avez démarré la session Docker interactive plus tôt dans ce didacticiel. À moins qu'un autre référentiel ne soit créé sur Docker Hub, le référentiel est généralement le nom d'utilisateur Docker Hub.
Par exemple, pour l'utilisateur sammy et l'ID de conteneur est d9b100f2f636, la commande sera:
docker commit -m "ajouté Node.js" -a "sammy" d9b100f2f636 sammy / ubuntu-nodejs
Lorsque l'image est soumise, la nouvelle image sera enregistrée sur l'ordinateur local. Plus loin dans ce didacticiel, vous apprendrez à pousser une image vers un référentiel Docker tel que Docker Hub afin que d'autres puissent y accéder.
Répertorier l'image Docker affichera la nouvelle image, ainsi que l'ancienne image:
images de docker
Voici le processus de fonctionnement:
leon@ubuntu-s-1vcpu-1gb-tor1-01:~$ docker commit -m "added Node.js" -a "leon" bd612e776819 leon/ubuntu-nodejs
sha256:e5120a19cee69adfa4ea83f9e97934aa0ba33624ce4230b92a999c4cb4d2f75d
leon@ubuntu-s-1vcpu-1gb-tor1-01:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
leon/ubuntu-nodejs latest e5120a19cee6 About a minute ago 167MB
ubuntu latest f63181f19b2f 4 weeks ago 72.9MB
hello-world latest bf756fb1ae65 13 months ago 13.3kB
leon@ubuntu-s-1vcpu-1gb-tor1-01:~$
8: Pousser l'image Docker vers le référentiel Docker
Après avoir créé une nouvelle image à partir d'une image existante, l'étape suivante consiste à partager cette image avec des amis, le monde entier sur Docker Hub ou d'autres bibliothèques Docker auxquelles vous avez accès. Pour pousser une image vers Docker Hub ou tout autre registre Docker, vous devez y avoir un compte.
La première étape consiste à vous connecter à votre compte:
connexion docker -u docker-registry-username
Si le nom d'utilisateur et le compte de connexion sont incohérents:
balise docker sammy / ubuntu-nodejs docker-registry-username / ubuntu-nodejs
Puis appuyez sur:
docker push docker-registry-username / docker-image-name
Si le nom d'utilisateur est sammy et que l'image est ubuntu-nodejs, utilisez la commande suivante:
docker push sammy / ubuntu-nodejs
9: Quelques commandes pour Ccontainer et Images
Répertorier tous les ID de conteneur
docker ps -aq
Arrêtez tous les conteneurs
docker stop $ (docker ps -aq)
Supprimer tous les conteneurs
docker rm $ (docker ps -aq)
Supprimer tous les miroirs
docker rmi $ (docker images -q)
Cet article est complété par l'apprentissage de l' installation et de l'utilisation de Docker sur Ubuntu 20.04 .
Voilà pour l'introduction.