docker数据卷
文章目录
- docker数据卷
- 1.docker挂载宿主机数据卷
- 1.2.具体配置
- 1.3.挂载命令
- 1.3.1访问页面
 
 
- 2.多端口的容器nginx配置
- 2.1.创建目录位置
- 2.2.访问结果
 
- 3.数据卷volume持久化配置
- 3.1.语法格式
- 3.2.详细参数
- 3.3.操作案例
- 3.4.数据改动
- 3.5.查看卷的详细属性
 
- 4.与某个容器使用一样的卷组
 
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笔记总结\docker\docker数据卷.assets\image-20230510163545130.png)]](https://img-blog.csdnimg.cn/23315ba154bb440592aeb0e83d12a218.png)
进入容器查看挂载位置
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zO6XnvW2-1683862645383)(D:\linux笔记总结\docker\docker数据卷.assets\image-20230510164422251.png)]](https://img-blog.csdnimg.cn/28b2f20ef07c433e82d9ed1cb426a440.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笔记总结\docker\docker数据卷.assets\image-20230511155519332.png)]](https://img-blog.csdnimg.cn/76eed3aacb1a4da7a6b4fb6e4caba923.png)
页面内容就比较简单了随便写的
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Eb5KA5np-1683862645384)(D:\linux笔记总结\docker\docker数据卷.assets\image-20230511155626718.png)]](https://img-blog.csdnimg.cn/8197745b89504796ad3018feca3d09e8.png)
2.2.访问结果
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Om5Z1tiu-1683862645384)(D:\linux笔记总结\docker\docker数据卷.assets\image-20230511160553256.png)]](https://img-blog.csdnimg.cn/a8b17674c2364931b60527aa6f06dbe7.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-baaOFCWO-1683862645385)(D:\linux笔记总结\docker\docker数据卷.assets\image-20230511163433552.png)]](https://img-blog.csdnimg.cn/c76c361a648740c09a5d85f8e4ac1478.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笔记总结\docker\docker数据卷volume详细配置案例讲解.assets\image-20230512112235328.png)]](https://img-blog.csdnimg.cn/5d2d1e689ae94b17a938e9b0c90f26ff.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笔记总结\docker\docker数据卷volume详细配置案例讲解.assets\image-20230512112559973.png)]](https://img-blog.csdnimg.cn/a6465c5ae5c74e17b04ef552f66b98b8.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



















