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