Didacticiel de base super détaillé de Docker, premier choix pour un docker de démarrage rapide

1. Présentation du menu fixe

1. Qu'est-ce qu'un docker

Docker est un moteur de conteneur d'applications open source, basé sur le langage Go et open source sous le protocole Apache2.0.
Docker permet aux développeurs de regrouper leurs applications et leurs dépendances dans un conteneur léger et portable, qui peut ensuite être distribué sur n'importe quelle machine Linux populaire, et peut également être virtualisé.
Le conteneur utilise complètement le mécanisme de bac à sable, et il n'y aura aucune interface entre eux (similaire à l'application iPhone), et plus important encore, la surcharge de performances du conteneur est extrêmement faible.
Docker est divisé en CE (Community Edition : Community Edition) et EE (Enterprise Edition : Enterprise Edition) depuis la version 17.03.

Pour le dire simplement , docker est un conteneur utilisé pour contenir des applications, tout comme une tasse peut contenir de l'eau, un porte-stylo peut contenir des stylos, un cartable peut contenir des livres, l'apprentissage en profondeur peut être mis en docker, les sites Web peuvent être mis en docker, et Tout programme souhaité est placé dans docker.

2. idée docker

2.1 Conteneur

S'il n'y a pas de conteneur, lorsque les marchandises sont transportées, les choses seront dispersées et facilement perdues, mais une fois qu'il y aura un conteneur, les marchandises y seront chargées et il ne sera pas facile de les perdre pendant le transport. À l'heure actuelle, nous devons déployer le programme sur une nouvelle machine, qui peut ne pas démarrer, comme des bibliothèques ou des fichiers de configuration manquants. Ensuite, si nous considérons les programmes comme des marchandises, nous n'avons qu'à emballer ces programmes dans un conteneur pour nous assurer que les programmes peuvent s'exécuter normalement après le déploiement, et docker est ce conteneur .

2.2 Normalisation

Mode de livraison:

Si nous déployons l'application de bureau sur le serveur, nous pouvons choisir de la copier avec un disque dur mobile, et avec docker, nous pouvons standardiser ce processus.
Docker transporte des marchandises via un super terminal, et partout où des marchandises sont nécessaires, les baleines envoient d'abord les marchandises au super terminal, puis les baleines livrent les marchandises du super terminal à la destination.
Dans l'exemple tout à l'heure, nous n'avons qu'à exécuter une commande docker sur le bureau, envoyer la baleine, envoyer le programme au super terminal, puis exécuter une commande docker sur le serveur, puis la baleine enverra le programme depuis le super terminal au serveur. .

Méthode de stockage :

Lorsque nous stockons le programme sur le serveur, nous devons nous souvenir de ce répertoire car nous pourrions changer de répertoire de stockage la prochaine fois. Avec docker, nous n'avons pas besoin de nous rappeler où se trouve le programme, nous n'avons besoin que d'une seule commande lorsque nous l'utilisons.

Interface API :

Docker fournit une série d'interfaces d'api de repos, y compris un démarrage, un arrêt, une vue, une suppression, etc. pour docker, c'est-à-dire notre application. Avec docker, il peut être manipulé via les commandes docker.

2.3 Isolement

Lorsque nous utilisons des machines virtuelles, nous avons notre propre processeur, disque dur et mémoire, et nous ne ressentons pas du tout l'existence de l'hôte externe. Docker est similaire, mais il est plus léger, cela peut nous prendre quelques minutes pour créer une machine virtuelle, mais docker ne prend qu'une seconde. La technologie sous-jacente est un mécanisme de limitation du noyau Linux appelé LXC.
LXC est une technologie légère de virtualisation de conteneurs qui isole les processus et les ressources avec une efficacité maximale. Les ressources physiques utilisées par les groupes de processus, telles que CPU, MEMORY, etc., sont isolées par des restrictions telles que cgroup et namespace. Ce mécanisme a été ajouté au noyau Linux il y a 7 ou 8 ans, et ce n'est qu'en 2013 que docker est né. Vous vous demandez peut-être pourquoi une si bonne technologie est enterrée depuis tant d'années et que personne ne l'a découverte ?
Les héros font le temps, et le temps fait les héros S'il n'y a pas d'exigences de cloud computing, de développement agile et de mise à l'échelle élastique à haute fréquence, et sans le développement rapide de l'industrie informatique pendant tant d'années, il n'y aura pas de docker.

3. Pourquoi choisir docker ? 

En tant que méthode de virtualisation émergente, Docker présente de nombreux avantages par rapport aux méthodes de virtualisation traditionnelles .

  1. Utilisation plus efficace des ressources système.
  2. Temps de démarrage plus rapide
  3. Environnement d'exploitation cohérent
  4. Livraison et déploiement continus
  5. migration plus facile
  6. Maintenance et extension simplifiées

4. Entrez dans le menu fixe

L' image est le conteneur mentionné ci-dessus, l' entrepôt est le super terminal et le conteneur est l'endroit où nous exécutons le programme. Le processus de docker exécutant le programme consiste à se rendre à l'entrepôt pour extraire l'image vers le local, puis à exécuter l'image dans un conteneur avec une seule commande.
build : construire, c'est-à-dire construire une image.
ship : transporter, transporter l'image, depuis l'entrepôt et l'hôte.
run : exécuter l'image est un conteneur.
build, ship, run et image, warehouse, conteneur sont en correspondance un à un.

4.1 Miroir

Le nom anglais du miroir est image. Nous avons parlé de conteneurs plus tôt, et tous les conteneurs traînés par des baleines sont des images miroir.

Essentiellement, une image est une série de fichiers, qui peuvent inclure les fichiers de notre application et les fichiers de l'environnement d'exécution de notre application. Puisqu'il s'agit d'un fichier, dans quel format est-il enregistré localement ?

En ce qui concerne les formats de stockage, il faut mentionner une technologie de stockage de linux, appelée système de fichiers commun . Il s'agit d'un système de fichiers hiérarchique qui peut monter différents répertoires sur le même système de fichiers virtuel.

Par exemple, il existe trois dossiers sous test1, deux dossiers sous test2 et un fichier readme. Un système de fichiers fédéré signifie que vous pouvez voir le contenu de plusieurs dossiers (test1, test2) dans un dossier (test).

De cette manière, la superposition des fichiers peut être réalisée, test1 peut la considérer comme la première couche et test2 peut la considérer comme la deuxième couche. Chaque couche a ses propres fichiers et docker utilise ce concept de superposition pour implémenter le stockage d'images.

Le format de stockage de l'image est illustré dans la figure suivante.

Ce graphique est en couches. La couche inférieure, la couche supérieure est également comme un conteneur répertorié ensemble. C'est la manière la plus intuitive de stocker des images. Ce qui suit est le démarrage du système d'exploitation, ce qui précède est le système d'exploitation Linux et ce qui précède est un logiciel connexe. S'il s'agit de notre propre programme, il peut s'agir de tomcat, jdk, puis du code de l'application. Chaque couche est sous notre contrôle, et la couche supérieure est ignorée en premier, car elle est liée au conteneur. Notez que chaque couche du système d'image docker est en lecture seule, et après le chargement de chaque couche, ces fichiers seront considérés comme le même répertoire, ce qui équivaut à un seul système de fichiers. Le système de fichiers de Docker est appelé une image.

4.2 Conteneur

Pour faciliter la compréhension, vous pouvez considérer les conteneurs comme des machines virtuelles. Chaque machine virtuelle a son propre système de fichiers. Toute la partie de la figure ci-dessus peut être considérée comme un système de fichiers. La différence avec le système de la machine virtuelle est que le système de fichiers est couche par couche et que les n couches inférieures sont toutes en lecture- uniquement, seule la couche supérieure est accessible en écriture. Pourquoi avoir une couche inscriptible ? Lorsque votre programme s'exécute, il est tenu d'écrire des journaux, d'écrire des fichiers ou d'apporter des modifications à certains fichiers du système, de sorte que le conteneur crée un système de fichiers lisible et inscriptible sur la couche supérieure .

Étant donné que chaque couche de l'image est en lecture seule, lorsque le programme s'exécute pour écrire le fichier image, il copie chaque couche du fichier sur la couche supérieure du fichier, puis le modifie. Après modification, lorsque notre application lira un fichier, elle cherchera à partir du niveau supérieur, et sinon, elle trouvera le niveau suivant.

Étant donné que la couche supérieure du conteneur peut être modifiée, l'image ne peut pas être modifiée, ce qui garantit que l'image peut générer plusieurs conteneurs à exécuter indépendamment sans aucune interférence.

4.3 Entrepôt

Notre image est de tourner sur d'autres machines, comment la transférer ?

Cela utilise l'entrepôt Docker.Nous devons d'abord transférer notre image vers l'entrepôt Docker, puis retirer l'entrepôt Docker de la destination, ce qui termine un tel processus de transfert.

Qui fournit un tel entrepôt ? Docker lui-même fournit hub.docker.com. Mais c'est très lent.Afin de résoudre ce problème, de nombreuses entreprises nationales créent également leurs propres entrepôts.

2. Installation de Docker

Étant donné que linux redhat7.4 est installé sur la machine virtuelle, ce qui suit vous présentera comment installer docker dans redhat. Les méthodes suivantes sont communes au noyau Linux, mais le package d'installation peut être différent.

L'installation doit répondre aux exigences suivantes :

  • Système d'exploitation 64 bits
  • Noyau Linux 3.1 et supérieur
  • la version d'iptables est 1.4 et supérieure
  • la version de git est 1.7 et supérieure
  • Un exécutable ps, généralement fourni par procps ou un package similaire.
  • XZ Utils 4.9 ou supérieur
  • Une hiérarchie cgroupfs correctement montée ; un seul point de montage de groupe de contrôle global n'est pas suffisant.

Vérifiez votre version actuelle du noyau avec  la commande uname -r  .

1. Installation en ligne

1.1 Si vous l'avez installé, veuillez d'abord le désinstaller

yum remove docker \
           docker-client \
           docker-client-latest \
           docker-common \
           docker-latest \
           docker-latest-logrotate \
           docker-logrotate \
           docker-engine

1.2 Les dépendances d'installation configurent le référentiel yum

Installez les dépendances :

yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

 Configurez le dépôt :

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

1.3 Installer le menu fixe

yum install docker-ce docker-ce-cli containerd.io

1.4 Démarrer et rejoindre le démarrage

systemctl start docker

systemctl enable docker

1.5 Vérifier que l'installation a réussi 

docker version

docker run hello-world

Vous pouvez voir la sortie Hello de Docker ! OK !

2. Installation hors ligne

Dans certains cas, nous devrons peut-être installer docker offline , puis nous présenterons en détail comment mettre en œuvre l'installation offline de docker.

2.1 Télécharger le package compressé docker

Téléchargez le package docker correspondant sur download.docker.com . J'ai téléchargé la version docker-18.03.1-ce.tgz ici. Si vous en avez besoin, vous pouvez directement m'envoyer un message.

2.2 Décompressez le fichier

[root@devops-102 ~]# tar -xvzf docker-18.03.1-ce.tgz 

2.3 Déplacez le fichier vers le chemin exécutable dans le répertoire système .

ps : Cette étape est facultative, vous pouvez également mettre le chemin de décompression dans la variable PATH. 

$ sudo cp docker/* /usr/bin/

Après l'exécution, vous verrez l'invite de l' API listen sur /var/run/docker.sock , indiquant que docker est déjà en cours d'exécution.

2.4 Démarrer Dockerd

$ sudo dockerd &

2.5 Vérification

$ sudo docker run hello-world

 Vous pouvez voir la sortie Hello de Docker ! OK !

2.6 Définir le démarrage automatique du démarrage

systemctl start docker       

systemctl enable docker

Trois, fonctionnement de base du docker

Après avoir installé docker, puisque je fais des recherches sur l'apprentissage en profondeur, nous devons installer l'environnement d'apprentissage en profondeur correspondant.En prenant la configuration de l'environnement pytorch comme exemple, nous allons présenter étape par étape comment créer notre propre image.

1. Fonctionnement de base du miroir

1.1 Saisir l'image

Tout d'abord, nous entrons sur le site Web de dockerhub pour sélectionner une image dont nous avons besoin.

 Saisissez ensuite :

docker pull pytorch/pytorch

Avec cette commande, vous pouvez extraire l'image de l'entrepôt distant docker vers le fichier local.

docker pull [options] NOM[:TAG]

name est le nom de l'image extraite ; TAG indique qu'il est facultatif, s'il n'est pas sélectionné, il indique la version la plus récente, et s'il est sélectionné, il indique la version spécifiée.
les options sont des paramètres extraits. Lorsque l'adresse de la requête n'est pas ajoutée, retournez sur le site officiel de docker pour extraire l'image.

1.2 Voir l'image

docker images 

 Avec cette commande, vous pouvez voir quels miroirs existent actuellement.

images docker [options] [Dépôt[:TAG]]

options sont des options suivies du nom de l'image spécifiée. Ceci n'est pas très utilisé. Il peut être nécessaire de spécifier un certain miroir à afficher lorsqu'il existe de nombreux miroirs locaux.
IMAGE ID est en fait une chaîne de 64 bits, qui peut identifier de manière unique notre image. Seuls 16 bits sont affichés ici, et ces derniers sont tronqués.

1.3 Démarrer un conteneur interactif

docker run -it -v /home/admin/workplace:/workspaces --name bert_pytorch pytorch/pytorch /bin/bash

docker run -t -i -v répertoire local : répertoire virtuel --name nom personnalisé IMAGE_NAME /bin/bash

-i –interactive=true | false, la valeur par défaut est false
-t –tty=true | false, la valeur par défaut est false
–name Personnaliser le nom du conteneur à démarrer, ce qui est pratique pour les opérations de sélection de conteneurs ultérieures afin de
démarrer un conteneur interactif , qui est similaire à une machine virtuelle , le mode de fonctionnement de l'hôte cloud, vous pouvez toujours continuer après avoir exécuté une commande

1.4 Supprimer le miroir

docker rmi d77dc4c8ebab

L'identité de l'image docker rmi

L'identifiant peut être un identifiant ou un nom.

2. Fonctionnement du conteneur

2.1 Exécution du conteneur

# Opération simple
docker run image identification|image name[tag]
# Paramètres communs
docker run -d -p host port: container port --name container name image identification|image name [tag]
# -d : représente l'arrière-plan Exécuter le conteneur
# -p : port hôte : port conteneur : afin de mapper le port Linux actuel et le port conteneur
# --name nom conteneur : spécifiez le nom du conteneur

2.2 Afficher les conteneurs en cours d'exécution

docker ps [OPTIONS]
# OPTIONS description :
# -a : signifie afficher tous les conteneurs, y compris ceux qui ne sont pas en cours d'exécution
# -q : afficher uniquement l'ID du conteneur
# -f : filtrer le contenu affiché en fonction des conditions
# --format : spécifier le retour value Fichiers modèles
# -l : affiche les conteneurs récemment créés
# -n : répertorie les n conteneurs les plus récemment créés
# --no-trunc : ne tronque pas la sortie
# -s : affiche la taille totale du fichier

2.3 Afficher les journaux du conteneur 

docker logs -f identifiant du conteneur

# -f : peut faire défiler les dernières lignes du journal

2.4 Pénétration à l'intérieur du conteneur

docker exec -it conteneurid bash

2.5 Supprimer le conteneur (avant de supprimer le conteneur, vous devez arrêter le conteneur)

docker stop container id
# arrêter le conteneur spécifié
docker stop $(docker ps -qa)
# arrêter tous les conteneurs
docker rm image id
# supprimer le conteneur spécifié
docker rm $(docker ps -qa)
# supprimer tous les conteneurs

2.6 Démarrer le conteneur

identifiant du conteneur de démarrage docker

3. Construire l'image

 En créant des images Docker, les modifications apportées au conteneur peuvent être enregistrées et réutilisées. La création d'images offre la possibilité de personnaliser des images, de regrouper et de distribuer des services et leurs environnements d'exécution en tant que logiciels. Docker propose deux manières de créer des images :

  • Construire via un conteneur : docker commit
  • 通过Dockerfile:construction de docker

3.1  Construire une image à l'aide de la commande commit

docker commit 7843e0556e67 bertpytorch

命令:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

Paramètres :
-a, --author="", spécifiez les informations sur l'auteur de l'image
-m, --message="", les informations de validation
-p, --pause=true, s'il faut suspendre le conteneur lors de la validation

3.2 Utiliser Dockerfile pour créer une image

Docker nous permet de créer une image personnalisée sous la forme d'un fichier de configuration similaire. Dans le fichier, nous pouvons spécifier l'image d'origine, les informations du responsable de l'image personnalisée, les actions entreprises sur l'image d'origine, les ports exposés et autres information. par exemple:

# Sample Dockerfile
FROM ubuntu:16.04
MAINTAINER wgp "[email protected]"
RUN apt-get update
RUN apt-get install -y nginx
EXPOSE 80

命令:docker build [OPTIONS] DockerFile_PATH | URL | -

Paramètres :
 –force-rm=false
​ –no-cache=false
​ –pull=false
​ -q, quiet=false, ne pas afficher d'informations pendant la construction
​ –rm=true
 -t, tag="", spécifiez la sortie informations sur le nom de l'image

4. Migration des images

Les images que nous réalisons sont généralement migrées vers d'autres machines. Docker propose plusieurs façons de migrer des images à partager avec d'autres. Il est recommandé d'utiliser Docker Registry directement pour la migration d'images, qu'il s'agisse d'utiliser directement Docker Hub ou d'utiliser un registre privé intranet. Lorsque la fréquence d'utilisation des miroirs n'est pas élevée et que le nombre de miroirs n'est pas important, nous pouvons choisir les deux méthodes suivantes.

4.1 Télécharger Docker Hub

Tout d'abord, vous devez demander un compte sur Docker Hub (un accès Internet scientifique est requis pour la vérification homme-ordinateur). Ensuite, nous devons créer un référentiel, en spécifiant le nom du référentiel.

Connectez-vous à votre compte Docker Hub dans le terminal, entrez la connexion docker, entrez le nom d'utilisateur et le mot de passe pour vous connecter avec succès.

Affichez l'image à télécharger et étiquetez l'image sélectionnée. Le nom de l'étiquette doit être le même que le nom du référentiel nouvellement créé sur Docker Hub, sinon le téléchargement échouera. La commande pour étiqueter une image est la suivante.

balise docker <image-existante> <hub-user>/<repo-name>[:<tag>]

Parmi eux, existing-image représente le nom de l'image à télécharger localement plus une balise, suivi de <hub-user>/<repo-name>[:<tag>] est le nom de la balise modifiée pour le téléchargement, et latest si la balise n'est pas spécifiée.

Ensuite, nous utilisons la commande push pour télécharger l'image directement.

docker push <hub-user>/<repo-name> :<tag>

Nous avons téléchargé avec succès. En raison du système de stockage en couches introduit précédemment, nous téléchargeons directement l'image ubuntu existante ici, mais nous la réétiquetons simplement, de sorte que seule la partie modifiée est réellement téléchargée.

4.2 Exportation de fichiers entre eux

Docker fournit également les commandes docker load et docker save pour enregistrer l'image sous forme de fichier tar. Par exemple, cette fois, nous enregistrons l'image bertpytorch:latest sous forme de fichier tar.

docker save -o bertpytorch.tar bertpytorch

docker save -o <nom de l'entrepôt>-<tag>.img <nom de l'entrepôt> :<tag>

En regardant le disque local, vous pouvez voir une archive nommée bertpytorch. Nous pouvons le copier sur d'autres machines et le réimporter avec la commande load.

docker load --input bertpytorch.tar

docker save --input <tar>

Quatrième opération Linux couramment utilisée

1. Fichiers et répertoires

cd /home Entrer dans le répertoire '/home' 
cd .. Revenir au répertoire précédent 
cd ../.. Revenir au répertoire précédent 
cd Entrer dans le répertoire personnel personnel 
cd ~user1 Entrer dans le répertoire personnel personnel 
cd - Retour là où tu étais content la dernière fois 

pwd afficher le chemin de travail 

mkdir dir1 crée un répertoire appelé 'dir1'' 
mkdir dir1 dir2 crée deux répertoires en même temps 
mkdir -p /tmp/dir1/dir2 crée une arborescence de répertoires 

rm -f file1 supprime un fichier appelé 'file1' 
rmdir dir1 supprime un répertoire appelé 'dir1' 
rm -rf dir1 supprime un répertoire appelé 'dir1' et supprime son contenu 
rm -rf dir1 dir2 supprime les répertoires et leur contenu 

cp fichier1 fichier2 Copier un fichier 
cp dir/* . Copier tous les fichiers d'un répertoire dans le répertoire de travail courant 
cp -a /tmp/dir1 . Copier un répertoire dans le répertoire de travail courant 
cp -a dir1 dir2 Copier un répertoire 
cp -r dir1 dir2 Copie un répertoire et des sous-répertoires

Les commandes de base de linux liées à docker seront continuellement mises à jour, il est recommandé de les collecter et de les vérifier de temps en temps ! ! !

Si cet article vous est utile, veuillez aimer, suivre et collecter pour trois supports consécutifs !

Votre soutien et votre reconnaissance sont la plus grande motivation pour ma création !


faire référence à:

Tutoriel de base super détaillé de Docker

Premiers pas avec docker (utiliser docker pour déployer des applications Web)

Docker Premiers pas avec le didacticiel pratique (1) Introduction à Docker

Docker - Mise en route

Guess you like

Origin blog.csdn.net/kobepaul123/article/details/120072009