您现在的位置是:首页 >技术教程 >docker数据卷volume详细配置案例讲解网站首页技术教程

docker数据卷volume详细配置案例讲解

武子豪、 2024-06-17 10:13:47
简介docker数据卷volume详细配置案例讲解

docker数据卷

1.docker挂载宿主机数据卷

一般来说nginx只有默认首页,我们装了nginx肯定不只有首页,因此网站源码存放位置我们需要考虑了,放到容器中,很多命令在容器中不生效这点就很头疼,因此就有了挂载这么个说发,在宿主机建一个目录,挂载到容器中,宿主机发生改变,容器也会跟着改变,实时同步

语法格式:

docker run -d -p 宿主机端口:docker端口 -v src:dest 镜像

可以是文件也可以是目录

1.2.具体配置

在本地创建一个目录
[root@localhost docker]# mkdir /opt/nginx_
然后在目录中写一个html的文件
我这边举例就随便写了一个
[root@localhost nginx_]# echo "123123" > index.html

1.3.挂载命令

[root@localhost docker]# docker run -d -p 80:80 -v /opt/nginx_/:/usr/share/nginx/html nginx:latest 

1.3.1访问页面

可以看到我们自己写的页面同步到了容器中

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C6G5UHzk-1683862645381)(D:linux笔记总结dockerdocker数据卷.assetsimage-20230510163545130.png)]

进入容器查看挂载位置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zO6XnvW2-1683862645383)(D:linux笔记总结dockerdocker数据卷.assetsimage-20230510164422251.png)]

2.多端口的容器nginx配置

操作举例:

创建80、81端口挂载数据目录实现跨越访问两个端口

[root@localhost nginx_]# docker run -d -p 80:80 -p 81:81 -v /web/conf.d/:/etc/nginx/conf.d -v /web/know_system/:/usr/share/nginx/html nginx:latest 

2.1.创建目录位置

[root@localhost web]#mkdir  /web/conf.d   know_system

81端口配置文件
[root@localhost conf.d]# cat know.conf 
server {
	listen 81;
	server_name know.com;

	location / {
		root /usr/share/nginx/html;
		index b.html;
	}
}


80端口配置文件
[root@localhost conf.d]# cat default.conf 
server {
	listen 80;
	server_name know.com;

	location / {
		root /usr/share/nginx/html;
		index index.html b.html;
	}
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wy3C9C1J-1683862645383)(D:linux笔记总结dockerdocker数据卷.assetsimage-20230511155519332.png)]

页面内容就比较简单了随便写的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Eb5KA5np-1683862645384)(D:linux笔记总结dockerdocker数据卷.assetsimage-20230511155626718.png)]

2.2.访问结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Om5Z1tiu-1683862645384)(D:linux笔记总结dockerdocker数据卷.assetsimage-20230511160553256.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-baaOFCWO-1683862645385)(D:linux笔记总结dockerdocker数据卷.assetsimage-20230511163433552.png)]

3.数据卷volume持久化配置

每当容器删除时,里面的数据也会随着删除,万一不小心删了一个容器时,那可就太倒霉了,因此docker还有一种数据卷叫做持久性数据卷组,每次都会把容器中操作的数据保存在数据卷组中,即使删除了这个容器,创建新的容器照样可以使用数据卷组中的内容。

3.1.语法格式

docker volume

3.2.详细参数

参数详解
create创建一个数据卷
inspect查看数据卷属性
ls查看所有数据卷
prune批量删除数据卷
rm删除单个数据卷

3.3.操作案例

1.创建一个持久化的数据卷
[root@localhost ~]# docker volume create nginx_bf
nginx_bf
2.查看已创建的数据卷
[root@localhost ~]# docker volume ls
DRIVER    VOLUME NAME
local     nginx_bf
3.使用数据卷
[root@localhost ~]# docker run -d -p 82:80 -v nginx_bf:/usr/share/nginx/html nginx:latest 
WARNING: IPv4 forwarding is disabled. Networking will not work.
bb086961e6a35e1c4c20cc744fe5f07bd70d8381574e4cca4350e5e66f91e8c7

刚配置完是可以访问到默认的页面

3.4.数据改动

1.我们来修改index首页数据
[root@localhost ~]# docker exec -it hardcore_cerf sh
# cd /usr/share/nginx/html       
# ls
50x.html  index.html
# echo "hello" > index.html

2.查看修改结果
[root@localhost ~]# curl -i 
hello

3.删除容器
[root@localhost ~]# docker rm -f hardcore_cerf 

4.在创建一个容器并挂载数据卷组
[root@localhost ~]# docker run -d -p 80:80 -v nginx_bf:/usr/share/nginx/html nginx:latest 
e1a1697cd3a97ce3437afd9f0cdbd1f685c5f11bee12f466da34986fb0ed616a

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7woZgROI-1683862645386)(D:linux笔记总结dockerdocker数据卷volume详细配置案例讲解.assetsimage-20230512112235328.png)]

验证后发现数据完整的保留下来

3.5.查看卷的详细属性

[root@localhost ~]# docker volume inspect nginx_bf 
[
    {
        "CreatedAt": "2023-05-12T11:07:44+08:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/nginx_bf/_data",
        "Name": "nginx_bf",
        "Options": {},
        "Scope": "local"
    }
]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fU4h28Zw-1683862645387)(D:linux笔记总结dockerdocker数据卷volume详细配置案例讲解.assetsimage-20230512112559973.png)]

卷的保存路径

进入这个路径可以看到保存在本地的卷组信息
[root@localhost ~]# cd /var/lib/docker/volumes/nginx_bf/
[root@localhost nginx_bf]# ls
_data
[root@localhost nginx_bf]# cd _data/
[root@localhost _data]# ls
50x.html  index.html

4.与某个容器使用一样的卷组

语法参数:

docker run -d -p port:port --volumes-from 要和谁使用相同的数据卷容器名 镜像名

案例:

[root@localhost _data]# docker run -d -p 83:80 --volumes-from frosty_fermat nginx:latest 
d26e173ecc714f1059998059b0a2489ac76449c295d12c8f6d3d8980e9b4feab

[root@localhost _data]# curl -i 127.0.0.1:83
hello
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。