宿主机与容器(docker)之间的数据共享

目录

一台宿主机上的容器和宿主机之间的数据共享

创建卷

进入Docker的卷的存储位置

进入卷ep1的数据存储位置

创建容器并挂载至卷ep1上

测试:

进入容器内部查看

一台宿主机上的多个容器之间的数据共享

挂载新的docker容器在该卷上

查看修改的数据是否一致

多台宿主机里的容器之间的数据共享

创建共享目录

添加nfs配置

测试:


准备环境: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验证:

说明共享成功

相关推荐
知已难寻6 小时前
Docker 入门:容器技术与 Docker 基础
java·运维·服务器·docker·云原生·容器
默|笙7 小时前
【Linux网络】网络层协议 IP(1)理解报头、网段划分
linux·网络·tcp/ip
修己xj9 小时前
nslookup 使用指南:两种模式与常用查询技巧
linux
唠玖馆11 小时前
文件系统详解
linux·文件系统·ext2
xbzb11 小时前
镜像到底存在哪:/var/lib/docker 的四级映射与 daemon.json 配置
docker·容器·json·镜像·daemon.json·四级
GeW11 小时前
当Linux内核开始“确定性”,制造高端化才有了底层语法
linux
星恒随风13 小时前
MySQL 从零入门(三):表的约束详解
linux·服务器·数据库·笔记·mysql
StarsGreen15 小时前
libva在intel平台上的前端流程简介
linux
坤坤子吖18 小时前
Linux网络编程:自定义应用层协议与 JSON 序列化
linux·服务器·网络·c++·笔记·json
方便面不加香菜19 小时前
Docker Volume -- 管理卷Volume详解
运维·docker·容器