Docker --- le partage des données et de la persistance des données

annuaire

 

Les données entre un hôte et un .docker partagé

Concept de volume de données (volume de données)

la persistance des données docker

Caractéristiques du volume des données

volume de données de mise en œuvre

le partage des données entre les deux conteneurs .docker

Concept de conteneurs de volumes de données

Pour les conteneurs de volume de données


Les données entre un hôte et un .docker partagé

Concept de volume de données (volume de données)

  • Lorsque vous utilisez le conteneur docker, il produira une série de fichiers de données. Mais quand nous avons fermé conteneur, ces fichiers de données disparaissent.
  • Si nous voulons conserver les fichiers de données persistantes, et les données peuvent être partagées entre l'hôte et le récipient, ce qui nécessite l'utilisation du volume de données.
  • le volume de données Docker du récipient peut être vu comme disque U, il est présent avec un ou plusieurs récipients, et pour monter le récipient de menu fixe, mais non combinées système de fichiers.
  • docker ne supprime pas son volume de données monté dans le récipient retiré.
  • Vous pouvez stocker des volumes de données d'applications de docker de données, et les volumes de données présentés au conteneur sous forme de docker est un répertoire qui supports partagés entre plusieurs conteneurs.
  • Utiliser le volume de données de docker, similaire à un système de fichiers en utilisant le support de montage pour monter le système

la persistance des données docker

  • Les données générées pendant l'opération du navire ne seront pas écrites dans le miroir, le miroir à nouveau l'utiliser pour démarrer un nouveau conteneur initialise un miroir, ajoutera une toute nouvelle couche pour enregistrer les données dans la lecture-écriture
  • Vous voulez faire la persistance des données, docker fournira des volumes de données ou le volume de conteneur de données pour résoudre le problème
  • En outre, vous pouvez également soumettre une nouvelle image par commit pour enregistrer les données produites

Caractéristiques du volume des données

  • Volume de données peut être réutilisé ou données partagées entre le navire
  • Le changement peut prendre effet directement dans le volume de données
  • Les données sur les changements de volume ne sont pas inclus dans la mise à jour en miroir
  • Le cycle de vie du volume de données continue à l'utiliser jusqu'à ce que le récipient ne

volume de données de mise en œuvre

  • Commande pour monter le volume de données par
1.命令格式为:
docker run -it -v /宿主机的绝对路径目录:/容器内目录  镜像名 /bin/bash
#参数说明
#-v是指定挂载目录, /bin/bash进入docker环境
2.此条命令会在宿主机和容器内创建指定的目录,目录里的数据可以共享。此外可以使用
docker inspect 容器ID //查看数据卷的挂载结果
3.我们也可以给数据添加限制权限,比如宿主机只能读去数据卷的内容,可以使用以下命令:
docker run -it -v /宿主机绝对路劲目录:/容器内目录:ro 镜像名
另外,同样能够使用 docker inspect 容器ID 查看权限信息

实例如下:
[root@cloud mnt]# docker run -it -v /mnt/demo01:/demo02 httpd /bin/bash
root@6b4349ecc8d4:/usr/local/apache2# cd /
root@6b4349ecc8d4:/# ls
bin  boot  demo02  dev	etc  home  lib	lib64  media  mnt  opt	proc  root  run  sbin  srv  sys  tmp  usr  var
root@6b4349ecc8d4:/# cd demo02/
root@6b4349ecc8d4:/demo02# ls
root@6b4349ecc8d4:/demo02# echo "123456" > 1.txt
root@6b4349ecc8d4:/demo02# ls
1.txt
root@6b4349ecc8d4:/demo02# exit
exit
[root@cloud mnt]# ls
demo01
[root@cloud mnt]# ls demo01/
1.txt
[root@cloud mnt]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS                      PORTS               NAMES
6b4349ecc8d4        httpd               "/bin/bash"         About a minute ago   Exited (0) 54 seconds ago                       nervous_buck
[root@cloud mnt]# docker inspect 6b4349ecc8d4
 "Mounts": [
            {
                "Type": "bind",
                "Source": "/mnt/demo01",
                "Destination": "/demo02",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],

  • Ajouter des volumes de données par dockerfile
1.Dockerfile对于docker镜像而言就如同java中的某个类的.class文件对应上该类的.java文件
2.创建Dockerfile文件的方式:
首先在linux服务器根目录上新建docker文件夹并且建立Dockerfile文件
如docker run -it -v /宿主机绝对路径目录:/docker内目录 镜像名,相当于
vim /docker/Dockerfile
FROM 镜像名
VOLUME ["/生成的目录路径"] --privileged=true
CMD echo "successful building"
CMD /bin/bash
3.然后我们执行dockerfile文件(docker build和docker commit两个命令都可以建立docker镜像,但是docker commit需要在容器内进行,docker build不需要)
docker build -f /docker/Dockerfile -t 命名空间/镜像名 . (注意此处有一个.)

实例如下:
[root@cloud docker]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              6678c7c2e56c        13 days ago         127MB
httpd               latest              c5a012f9cf45        3 weeks ago         165MB
[root@cloud docker]# 
[root@cloud docker]# cat Dockerfile 
# volume test
FROM nginx
VOLUME ["/demo03"] --privileged=true
CMD echo "successful building"
CMD /bin/bash

[root@cloud docker]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              6678c7c2e56c        13 days ago         127MB
httpd               latest              c5a012f9cf45        3 weeks ago         165MB
[root@cloud docker]# docker build -f /docker/Dockerfile -t demo/nginx .
Sending build context to Docker daemon  2.048kB
Step 1/4 : FROM nginx
 ---> 6678c7c2e56c
Step 2/4 : VOLUME ["/demo03"] --privileged=true
 ---> Running in 50d079f73f8e
Removing intermediate container 50d079f73f8e
 ---> 5fc8cf76cfb7
Step 3/4 : CMD echo "successful building"
 ---> Running in 5df40d4f6f6d
Removing intermediate container 5df40d4f6f6d
 ---> 62982b04da33
Step 4/4 : CMD /bin/bash
 ---> Running in d229329a482c
Removing intermediate container d229329a482c
 ---> 8257b617bbc8
Successfully built 8257b617bbc8
Successfully tagged demo/nginx:latest
[root@cloud docker]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
demo/nginx          latest              8257b617bbc8        3 seconds ago       127MB
nginx               latest              6678c7c2e56c        13 days ago         127MB
httpd               latest              c5a012f9cf45        3 weeks ago         165MB
[root@cloud docker]# docker run -it -name demo demo/nginx /bin/bash
unknown shorthand flag: 'n' in -name
See 'docker run --help'.
[root@cloud docker]# docker run -it demo/nginx /bin/bash
root@06a79d51ebe0:/# ls
bin  boot  demo03  dev	etc  home  lib	lib64  media  mnt  opt	proc  root  run  sbin  srv  sys  tmp  usr  var
root@06a79d51ebe0:/# 

le partage des données entre les deux conteneurs .docker

Concept de conteneurs de volumes de données

  • le volume de données équivalent à un disque dur amovible, et le volume de données des conteneurs correspond à une pluralité de disque dur mobile monté sur un mobile de disque dur amovible, pour réaliser le transfert des dépendances de données entre
  • explication officielle Docker est donnée: un conteneur de montage appelé volume de données, partage de données contenant d'autres par le montage du conteneur parent, le volume de données de chargement du conteneur, le conteneur de volume de données appelé

Pour les conteneurs de volume de données

  • La mise en place du conteneur parent
1.命令格式为:
docker run -it --name 父容器名字 -v /容器内目录 镜像名 /bin/bash
  • Mettre en place l'enfant hérite du navire de conteneur parent
1.命令格式:
docker run -it --name 子容器 --volumes-from 父容器 镜像名 /bin/bash

 

Remarque: Le transfert de configuration d'informations entre le conteneur, le volume du cycle de vie des données continuera jusqu'à ce qu'il n'y a pas de récipient pour utiliser le volume de données. Tant qu'il y est un conteneur qui est encore en cours d'utilisation du volume de données, le volume de données peut avoir le partage des données. Si nous fermons le conteneur parent, vous pouvez toujours partager des données entre le sous-conteneur, par héritage et la production conteneur enfant du nouveau conteneur, les mêmes données peuvent être partagées avec des sous-conteneur

Publié 139 articles originaux · éloge de won 168 · vues 40000 +

Je suppose que tu aimes

Origine blog.csdn.net/qq_42761527/article/details/104935559
conseillé
Classement