Veuillez indiquer la source de la réimpression : http://blog.csdn.net/zhaoyanjun6/article/details/130181636
Cet article provient du [blog de Zhao Yanjun]
Annuaire d'articles
- site officiel
- Télécharger et installer
- Installer
- Image Docker
- récipient
- Commandes courantes
-
- info docker
- images de docker
- version docker
- docker ps : Afficher les conteneurs
- docker ps-a
- Voir quels fichiers se trouvent dans le répertoire racine du conteneur
- Afficher un répertoire du conteneur
- Charger des fichiers locaux dans le conteneur
- Supprimer les fichiers dans le répertoire du conteneur
- copier le fichier conteneur en local
- supprimer le conteneur
- supprimer le miroir
- Tirez la première image
- exécuter la première image
- diagramme d'architecture docker
site officiel
Télécharger et installer
Téléchargez le logiciel de la plate-forme correspondante et installez-le
Installer
Installez la description donnée par le logiciel et exécutez les commandes dans l'ordre
Image Docker
L'image est utilisée dans Docker pour représenter une image miroir. Chaque conteneur est une image miroir
image miroir
Nous savons tous que le système d'exploitation est divisé en 内核
et 用户空间
. Pour Linux, après le démarrage du noyau, le système de fichiers racine sera monté pour fournir une prise en charge de l'espace utilisateur. Cependant Docker 镜像(Image)
, il équivaut à un système de fichiers racine. Par exemple, l' ubuntu:18.04
image contient un Ubuntu 18.04
ensemble complet du système de fichiers racine du système minimal.
Une image Docker est un système de fichiers spécial. En plus de fournir les programmes, les bibliothèques, les ressources, la configuration et d'autres fichiers requis par l'exécution du conteneur, elle contient également certains paramètres de configuration préparés pour l'exécution (tels que des volumes anonymes, des variables d'environnement, des utilisateurs, etc). Les images ne contiennent aucune donnée dynamique et leur contenu n'est pas modifié après leur création.
Stockage hiérarchique
Parce que l'image contient le système de fichiers racine complet du système d'exploitation, son volume est souvent énorme, donc lors de la conception de Docker, il tire pleinement parti de la technologie et la conçoit comme une architecture de stockage hiérarchique. À proprement parler, une image n'est pas un fichier empaqueté comme une ISO. Une image n'est qu'un concept virtuel. Son incarnation réelle n'est pas composée d'un fichier, mais d'un groupe de systèmes de fichiers, ou en d'autres termes, d'une combinaison de plusieurs couches systèmes de fichiers composition.
Lorsque l'image est construite, elle sera construite couche par couche, et la couche précédente est la base de la couche suivante. Une fois chaque calque créé, il ne changera plus et tout changement sur le calque suivant ne se produira que sur son propre calque.
Par exemple, l'opération de suppression d'un fichier dans la couche précédente ne supprime pas réellement le fichier dans la couche précédente, mais marque uniquement le fichier comme supprimé dans la couche actuelle. Lorsque le conteneur final est en cours d'exécution, bien que ce fichier ne soit pas visible, en fait, le fichier suivra toujours l'image. Par conséquent, lors de la construction d'une image, vous devez faire très attention. Chaque calque ne doit contenir que ce qui doit être ajouté à ce calque, et tout élément supplémentaire doit être nettoyé avant la fin de la construction du calque.
La fonctionnalité de stockage hiérarchique facilite également la réutilisation et la personnalisation des images. Vous pouvez même utiliser l'image précédemment créée comme calque de base, puis ajouter de nouveaux calques pour personnaliser ce dont vous avez besoin et créer une nouvelle image.
récipient
La relation entre miroir ( Image
) et conteneur ( Container
) est similaire à 类
et 实例
. Miroir est une définition statique et conteneur est une entité lorsque la mise en miroir est en cours d'exécution. Les conteneurs peuvent être créés, démarrés, arrêtés, supprimés, mis en pause, etc.
L'essence d'un conteneur est un processus, mais contrairement à un processus directement exécuté sur l'hôte, un processus de conteneur s'exécute dans son propre espace de noms indépendant. Ainsi, un conteneur peut avoir son propre système de fichiers racine, sa propre configuration réseau, son propre espace de processus et même son propre espace d'ID utilisateur. Le processus du conteneur s'exécute dans un environnement isolé et, lorsqu'il est utilisé, il semble fonctionner sous un système indépendant de l'hôte. Cette fonctionnalité rend les applications encapsulées dans des conteneurs plus sécurisées que celles exécutées directement sur l'hôte. De plus, en raison de cette fonctionnalité d'isolation, de nombreuses personnes confondent souvent les conteneurs et les machines virtuelles lorsqu'elles apprennent Docker pour la première fois.
Comme mentionné précédemment, les images utilisent un stockage hiérarchique, tout comme les conteneurs. Lorsque chaque conteneur s'exécute, l'image est utilisée comme couche de base et une couche de stockage pour le conteneur actuel est créée dessus. Nous pouvons appeler cette couche de stockage préparée pour l'exécution du conteneur read and write 容器存储层
.
Le cycle de vie de la couche de stockage du conteneur est le même que celui du conteneur. Lorsque le conteneur meurt, la couche de stockage du conteneur meurt également. Par conséquent, toute information stockée dans la couche de stockage du conteneur sera perdue lors de la suppression du conteneur.
Selon les meilleures pratiques de Docker, les conteneurs ne doivent pas écrire de données dans leur couche de stockage, et la couche de stockage des conteneurs doit rester sans état. Toutes les opérations d'écriture de fichiers doivent utiliser 数据卷(Volume)
, ou 绑定宿主目录
lire et écrire dans ces emplacements ignoreront la couche de stockage du conteneur et liront et écriront directement sur l'hôte (ou le stockage réseau), qui offre des performances et une stabilité supérieures.
Le cycle de vie du volume de données est indépendant du conteneur. Lorsque le conteneur meurt, le volume de données ne mourra pas. Par conséquent, après avoir utilisé le volume de données, les données ne seront pas perdues après la suppression ou le redémarrage du conteneur.
Commandes courantes
info docker
Afficher les informations sur le menu fixe
images de docker
version docker
docker ps : Afficher les conteneurs
docker ps ne peut voir que les conteneurs en cours d'exécution, pas les conteneurs en cours d'exécution
docker ps-a
Afficher tous les conteneurs de statut
Voir quels fichiers se trouvent dans le répertoire racine du conteneur
docker exec 容器id ls -a /
Afficher un répertoire du conteneur
Par exemple, nous voulons voir quels fichiers se trouvent usr
dans le répertoire
Format de commande :
docker exec 容器id ls 容器目录
Exemple : afficher les fichiers dans le usr
répertoire
docker exec 9a5dd57529c9 ls /usr
Charger des fichiers locaux dans le conteneur
format de commande
docker cp 文件 容器id:容器目录
Exemple : Télécharger des images de bureau IMG_0423.jpeg
dans usr
le répertoire du conteneur
docker cp /Users/zhaoyj/Desktop/IMG_0423.jpeg 9a5dd57529c9:usr
Supprimer les fichiers dans le répertoire du conteneur
Format de commande :
docker exec conteneur id rm chemin du fichier
Exemple : supprimer usr
le répertoireIMG_0423.jpeg
docker exec 9a5dd57529c9 rm /usr/IMG_0423.jpeg
copier le fichier conteneur en local
format de commande
docker cp CONTAINER:SRC_PATH DEST_PATH
Exemple : copier le répertoire usr du conteneur test.png
dans le dossier du bureau local
docker cp 9a5dd57529c9:usr/test.png /Users/smile/Desktop/
supprimer le conteneur
Format de commande :
docker rm CONTAINER_ID
supprimer le miroir
Format de commande :
docker rmi IMAGE_ID
Avis:删除镜像之前,需要先把对应的容器删掉,否则会报错
Tirez la première image
Docker nous fournit officiellement une image hello-world sur https://hub.docker.com/
adresse hello-world : https://hub.docker.com/_/hello-world
Nous essayons d'abattre le local
Commande
docker pull hello-world
miroir
Commande
docker images
L'image peut également être vue sur le client docker de mac
exécuter la première image
Commande
docker run hello-world