目录
准备环境:CentOS7.9中的docker安装
一台宿主机上的容器和宿主机之间的数据共享
root@docker1 \~\]# mkdir volumes \[root@docker1 \~\]# cd volumes
创建卷
root@docker1 volumes\]# docker volume create ep1 ep1 \[root@docker1 volumes\]# docker volume ls

进入Docker的卷的存储位置
root@docker1 volumes\]# cd /var/lib/docker/volumes/
进入卷ep1的数据存储位置
root@docker1 volumes\]# cd ep1 \[root@docker1 ep1\]# ls _data \[root@docker1 ep1\]# cd _data/ \[root@docker1 _data\]# ls \[root@docker1 _data\]#
此时里面数据为空
创建容器并挂载至卷ep1上
root@docker1 _data\]# docker run -d -p 7070:80 --name epN1 --mount source=ep1,target=/usr/share/nginx/html nginx a7ac6df0ec1541b6920844ce2cf5c2f05663fb04f0df4edaa7d5da746339ab58
source=ep1,ep1是卷的名字
target=/usr/share/nginx/html 容器里的目标文件夹,nginx默认的存放网站网页的地方------网页根目录
目的是共享宿主机上的卷和nginx存放网页目录的数据
测试:
root@docker1 _data\]# cd /var/lib/docker/volumes/ep1/_data/ \[root@docker1 _data\]# ls 50x.html index.html \[root@docker1 _data\]# vim index.html
修改为
进入容器内部查看
root@docker1 _data\]# docker exec -it epN1 bash root@a7ac6df0ec15:/# cd /usr/share/nginx/html root@a7ac6df0ec15:/usr/share/nginx/html# ls 50x.html index.html
说明数据共享成功
一台宿主机上的多个容器之间的数据共享
挂载新的docker容器在该卷上
另一种挂载语句:
root@docker1 _data\]# docker run -d -p 7071:80 --name epN2 -v ep1:/usr/share/nginx/html nginx f674f22d80bd94225f3e0bf5b4dadba4168fb5084ea6f823131aa00a45b24d0d
查看修改的数据是否一致
root@f674f22d80bd:/# cd /usr/share/nginx/html
root@f674f22d80bd:/usr/share/nginx/html# ls
50x.html index.html
可以发现和之前修改的数据一样
两个端口也可以访问,说明多个容器之间实现了数据共享
多台宿主机里的容器之间的数据共享
准备环境:nfs搭建
这里使用的另外一台虚拟机为Ubantu24.04
创建共享目录
root@docker1 \~\]# mkdir /nfs/web -p
给其他机器写的权限
root@docker1 \~\]# chmod 777 /nfs/web/
添加nfs配置
root@docker1 \~\]# vim /etc/exports

root@docker1 \~\]# exportfs -a 输出所有共享目录 \[root@docker1 \~\]# exportfs -v 显示输出的共享目录 \[root@docker1 \~\]# exportfs -r 重新输出所有的共享目录
在另一台宿主机上测试是否能挂载
root@docker2:/# mkdir /mount
root@docker2:/# mount 192.168.254.136:/nfs/web /mount
root@docker2:/# df -Th

说明挂载成功
在2台docker 宿主机上创建支持nfs功能的卷 nfs-web-1
--opt o=addr=192.168.254.136 指定nfs服务器的地址
--opt device=:/nfs/web 指定nfs服务器上共享的文件夹的路径
root@docker2:/# docker volume create --driver local --opt type=nfs --opt o=addr=192.168.254.136,nolock,soft,rw,sync --opt device=:/nfs/web nfs-web-1
nfs-web-1
在2台docker宿主机上启动容器,使用刚刚创建的nfs-web-1卷
第一台:
root@docker1 \~\]# docker run -d --name test-1 -p 5588:80 -v /nfs/web:/usr/share/nginx/html nginx 37f39d51dbd4a0846095c1603345448398bacdaefec5c0890be04eb43cf30983
第二台:
root@docker2:/# docker run -d --name test-1 -p 5588:80 -v nfs-web-1:/usr/share/nginx/html nginx
678e7f31c89eb5e099af55b1e43d6d470a11d6f3f48020d1dcdb78d9cd55ae76
测试:
更改第一台宿主机的nginx配置文件:
root@docker1 \~\]# cd /nfs/web/ \[root@docker1 web\]# vim index.html

在第二台宿主机验证:
root@docker2:/# docker exec -it test-1 bash
说明共享成功
也可以在window上访问ip验证:
说明共享成功