Docker数据volume配置详解及案例应用(四)

简介: 1.docker数据卷1.1.docker挂载宿主机数据卷一般来说nginx只有默认首页,我们装了nginx肯定不只有首页,因此网站源码存放位置我们需要考虑了,放到容器中,很多命令在容器中不生效这点就很头疼,因此就有了挂载这么个说发,在宿主机建一个目录,挂载到容器中,宿主机发生改变,容器也会跟着改变,实时同步语法格式:​ docker run -d -p 宿主机端口:docker端口 -v src:dest 镜像

1.docker数据卷

1.1.docker挂载宿主机数据卷

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


语法格式:


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


参数:


可以是文件也可以是目录


具体配置

1)建立web站点目录
[root@docker01 ~]# mkdir /web
2)准备源码
[root@docker01 web]# cp /root/know_system.tar.gz 
[root@docker01 web]# tar xf know_system.tar.gz 
[root@docker01 ~]# ls /web/know_system
3)挂载
[root@docker01 ~]# docker run -d -p 82:80 -v /web/know_system:/usr/share/nginx/html --name know2_nginx nginx
7454e27f2a5331c90fb6ef1ea7c29c8f4cc80a842a487d3a577aa961bf7d24cf
[root@docker01 ~]# docker exec -it know2_nginx /bin/bash
root@7454e27f2a53:/# ls /usr/share/nginx/html/
'cisco+H3C data'          index.html        'linux-'$'\346\226\207\346\241\243'
 cisco-file          'key points of eth first phase'    'linux-'$'\347\254\224\350\256\260\345\244\247\345\205\250'
'cisco-'$'\347\254\224\350\256\260'   linux-data         linuxfile
 data             linux-image       'login-'$'\345\244\207\347\224\250''.html'
 image             'linux-'$'\346\226\207\346\234\254'   login.html

image.png

1.2.案例:多端口的nginx容器配置

当访问容器的80端口出现默认首页,访问81端口出现know的页面

实现思路:将配置文件也以挂载的方式去实现,web站点也以挂载方式实现

1.创建配置文件目录
[root@docker01 ~]# mkdir /web/conf.d
[root@docker01 conf.d]# cat know.conf 
server {
  listen 81;
  server_name know.com;
  location / {
    root /usr/share/nginx/html;
    index index.html;
  }
}
2.创建站点目录
[root@docker01 ~]# mkdir /web/know_system/
3.运行容器并挂载数据卷
docker run命令可以多次调用相同的参数
[root@docker01 ~]# 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 
7584cf390f6a5127bbd3ce19e03b7acc9b47da7c1e3c93e267071589eb97dcab
4.进入容器查看是否有文件
[root@docker01 conf.d]# docker exec -it festive_bohr /bin/bash
root@7584cf390f6a:/# ls etc/nginx/conf.d/
know.conf
root@7584cf390f6a:/# ls /usr/share/nginx/html/
5.访问
6.需要修改配置只需要在本地的/web/conf.d目录编写配置文件即可,写完后用docker restart重启即可
[root@docker01 conf.d]# vim know.conf 
[root@docker01 conf.d]# docker restart festive_bohr

image.png1.3.docker持久化数据卷组

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

语法格式:

docker volume 参数 数据卷组名称


参数列表:

image.png

1.创建持久性数据卷组
[root@docker01 conf.d]# docker volume create nginx_site
nginx_site
[root@docker01 conf.d]# docker volume ls
DRIVER              VOLUME NAME
local               nginx_site
2.使用数据卷组
[root@docker01 conf.d]# docker run -d -p 82:80 -v nginx_site:/usr/share/nginx/html nginx
b6ee57e0ec7fd89368ab2269f799be898f73e0692c5113f40a924ce03362ba30
3.数据改动
root@docker01 conf.d]# docker exec -it lucid_newton /bin/bash
root@b6ee57e0ec7f:/# cd /usr/share/nginx/html/
root@b6ee57e0ec7f:/usr/share/nginx/html# echo "hello volume" > index.html
4.访问页面
[root@docker01 conf.d]# curl 127.0.0.1:82
hello volume
5.删除容器
[root@docker01 conf.d]# docker rm -f lucid_newton 
lucid_newton
6.重新创建一个容器并挂载数据卷组
[root@docker01 conf.d]# docker run -d -p 83:80 -v nginx_site:/usr/share/nginx/html nginx
aa9406ea69542486c6a3b7b6db74d53a92ba50fa15a5fea9c64b95d527c01b13
7.访问
[root@docker01 conf.d]# curl 127.0.0.1:83
hello volume
验证后发现数据完整的保留下来

1.4.查看数据卷组详细信息

[root@docker01 conf.d]# docker volume inspect  nginx_site 
[
    {
        "CreatedAt": "2020-06-21T23:27:59+08:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/nginx_site/_data",   //卷组数据存放位置
        "Name": "nginx_site",
        "Options": {},
        "Scope": "local"
    }
]
[root@docker01 conf.d]# ls /var/lib/docker/volumes/nginx_site/_data
50x.html  index.html

1.5.与某个容器使用相同的数据卷组

语法格式:

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

[root@docker01 conf.d]# docker run -d -p 85:80 --volumes-from blissful_blackburn nginx
de40b06d4775c43a15d94cbc1f3035fac28de18d3c2c5b52d92bb74a958a7922
目录
相关文章
|
14天前
|
运维 应用服务中间件 nginx
docker运维查看指定应用log文件位置和名称
通过本文的方法,您可以更高效地管理和查看Docker容器中的日志文件,确保应用运行状态可控和可监测。
85 28
|
2月前
|
NoSQL Java Linux
《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结
《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结
282 75
|
1月前
|
存储 Ubuntu 关系型数据库
《docker基础篇:7.Docker容器数据卷》包括坑、回顾下上一讲的知识点,参数V、是什么、更干嘛、数据卷案例
《docker基础篇:7.Docker容器数据卷》包括坑、回顾下上一讲的知识点,参数V、是什么、更干嘛、数据卷案例
58 13
|
2月前
|
Docker 容器
|
2月前
|
开发工具 Docker 容器
Docker 镜像加速器配置指南
dockerhub加速器失败,使用第三方加速器
|
2月前
|
Docker 容器
Docker 镜像加速器配置指南
dockerhub加速器失败,使用第三方加速器
|
2月前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
239 7
|
2月前
|
存储 Prometheus 监控
Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行
本文深入探讨了在Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行。
85 5
|
2月前
|
开发框架 安全 开发者
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。本文探讨了 Docker 在多平台应用构建与部署中的作用,包括环境一致性、依赖管理、快速构建等优势,以及部署流程和注意事项,展示了 Docker 如何简化开发与部署过程,提高效率和可移植性。
86 4
|
2月前
|
存储 缓存 运维
Docker镜像采用分层存储,每层代表镜像的一部分,如基础组件或应用依赖,多层叠加构成完整镜像
Docker镜像采用分层存储,每层代表镜像的一部分,如基础组件或应用依赖,多层叠加构成完整镜像。此机制减少存储占用,提高构建和传输效率。Docker还通过缓存机制提升构建和运行效率,减少重复工作。文章深入解析了Docker镜像分层存储与缓存机制,包括具体实现、管理优化及实际应用案例,帮助读者全面理解其优势与挑战。
91 4