1.数据卷概述
容器数据卷可以是宿主机中的一个目录或文件,通过将目录或文件挂载到容器中,可解决容器中的数据与宿主机之间立刻同步。

数据卷可以间接的将外部主机文件传输到宿主机数据卷目录,可解决容器与外部主机之间文件交换的问题。

一个数据卷目录可以同时挂载多个容器,解决多容器之间文件交换的问题,数据卷可以解决容器删除后容器数据丢失的问题,实现数据持久化。

2.配置容器数据卷

配置方式:
在创建启动容器时,使用-v参数设置数据卷
docker run 参数 -v 宿主机目录/文件:容器内目录/文件...

注意事项:
目录必须是绝对路径
如果目录不存在,会自动创建

1.创建容器并挂载数据卷
[root@localhost ~]# docker run -d --name=ngx_v2 -p 88:80 \
> -v /root/turntable_lottery-master/:/usr/share/nginx/html \
> nginx:1.20.2

2.进入容器查看数据卷目录
[root@localhost ~]# docker exec -it ngx_v2 /bin/bash
[root@0ae746c3c444:/]# ls /usr/share/nginx/html/
 README.md  common  css	image  index.html  js

​ 访问测试:http://192.168.0.10:88/

3.验证数据同步:在宿主机数据卷目录修改index.html文件验证数据同步
[root@localhost turntable_lottery-master]# vim index.html 
刷新页面:http://192.168.0.10:88/

4.验证数据同步:在容器的数据卷目录创建文件验证数据同步
root@de91cd23b075:/usr/share/nginx/html# echo "<marquee><font color=red><h1>Hello<marquee>" > test.html
> 容器数据卷可以是宿主机中的一个目录或文件,通过将目录或文件挂载到容器中,可解决容器中的数据与宿主机之间立刻同步。

5.退出并删除容器
[root@localhost ~]# docker stop ngx_v2
[root@localhost ~]# docker rm ngx_v2

6.宿主机验证数据卷目录数据是否存在
[root@localhost ~]# ls turntable_lottery-master/
common  css  image  index.html  js  README.md  test.html

7.重新创建容器,并将数据卷目录同步到容器中
[root@localhost ~]# docker run -d --name=ngx_v2 -p 88:80 \
> -v /root/turntable_lottery-master/:/usr/share/nginx/html \
> nginx:1.20.2
> 数据卷可以解决容器删除后容器数据丢失的问题,实现数据持久化。
提示:一个容器可以同时挂载多个数据卷目录。
访问测试:http://192.168.0.10:88/
3.多容器挂载同一个数据卷
一个数据卷目录可以同时挂载多个容器,解决多容器之间文件交换的问题。
1. 创建容器并挂载同一个数据卷
[root@localhost ~]# docker run -d --name=ngx_v3 -p 89:80 \
> -v /root/turntable_lottery-master/:/usr/share/nginx/html \
> nginx:1.20.2

2.进入ngx_v3容器数据卷目录创建文件
[root@localhost ~]# docker exec -it ngx_v3 /bin/bash
root@718022ca4162:/# cd /usr/share/nginx/html/
root@718022ca4162:/usr/share/nginx/html# echo "<marquee><font color=red><h1>ngx_v3<marquee>" > ngx_v3.html
访问ngx_v3容器端口:http://192.168.0.10:89/ngx_v3.html
访问ngx_v2容器端口:http://192.168.0.10:88/ngx_v3.html
小结:通过访问不同的容器可以发现,一个数据卷目录可以同时被多个容器挂载,解决多容器之间文件交换的问题。
上一篇 下一篇