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


















