Docker数据卷技术
体验
体验以下,类似于双向绑定的一种数据同步技术:
1 | docker run -it -v /home/ceshi:/home centos /bin/bash |
-v 代表挂载,宿主机文件地址:容器地址
我在centos的/home目录下创建了一个test.java,结果在我自己的服务器上的/home/ceshi里面找到了我新建的文件;
练习
第一种:使用-v
复制数据库:
1 | docker run -d -p 3333:3306 -v /home/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql |
我们把数据放在本地,使用 docker inspect 容器ID查询容器的挂载情况

- source代表的是本地目录,下面的那个菜单代表的是我们的容器地址
我们无论在哪里修改数据,在服务器或者在容器内,这样都会改变两边的数据;
第二种:使用DockerFile
DockerFile 是用来构建Docker镜像的构建文件,是由一些列命令和参数构成的脚本。
编写脚本:
1 | vim dockerfile1 |
使用脚本生成镜像 挂载:
1 | docker build -f /home/Docker_test/dockerfile1 -t centos . |

进入容器,发现多了两个文件夹,于是我们在里面添加和修改文件,看一下宿主机的情况如何;
使用 **docker inspect **发现挂载的文件所在地方,我们去到那个文件地址并添加一些数据,查看变化

我在宿主机和容器里面添加了数据发现,两边都会定向修改,达到我们的目的,实现了在两个地方修改数据,数据都会同步
匿名和具名挂载
1 | 匿名挂载 |
上面的两种挂载方式都没有指明挂载的所在位置;
数据卷容器
命名的容器挂载数据卷,其他容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器,称之为 数据卷容器。 我们使用上一步的镜像:centos 为模板,运行容器 saxon01,saxon02他 们都会具有容器卷
实现的目的是,docker内部的容器的数据统一,数据之间可以互用;
第一步,先建立一个根容器,里面已经挂载数据卷
1 | docker run -it -d -v |
第二步,使用–volumes-from name 关联一个我们已经创建的容器

第三步,在主容器里面添加记录

接着查看副容器里面的数据;

最后查看宿主机上的数据,查看二号机的数据 在查看刚才添加的数据:

得出结论: 容器之间配置信息的传递是一种双向绑定关系,数据卷的生命周期一直持续到没有容器使用它为止。 存储在本机的文件则会一直保留!



