Docker 学习之 Docker 容器数据卷

article/2025/10/13 4:05:35

容器数据卷

什么是容器数据卷

docker 理念回顾

将应用和环境打包成一个镜像!

问题:数据?如果数据都在容器中,那么我们删除容器,数据就会丢失!需求:数据可以持久化!

容器之前可以有一个数据共享技术! Docker 容器中产生的数据,同步到本地!

这就是卷技术!目录的挂载,将我们的容器内的目录,挂载到 Linux 上

 总结:容器的持久化和同步操作!容器间也是可以数据共享的! 

使用数据卷

方式一:直接使用命令来挂载 -v

docker run -it -v 主机目录:容器目录# 测试
[root@zhujixiang home]# docker run -it -v /home/cesi:/home centos /bin/bash# 启动起来之后我们可以通过 docker inspect 容器id

测试文件的同步

 再次测试:

# 1、先关闭容器
# 2、修改本地文件
# 3、打开容器,进入容器查看
# 4、发现同步到了容器内部的文件

好处:只在本地修改即可,会自动同步到容器内部!

实战:安装MySQL

# 1、获取镜像
[root@zhujixiang /]# docker pull mysql:5.7# 2、运行容器,需要做数据挂载  安装启动 mysql 需要配置密码# 启动MySQL
-d 后台运行
-p 端口暴露
-v 卷挂载
-e 环境配置
--name 容器名字
[root@zhujixiang /]# docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7# 3、本地测试,可以连接到MySQL服务器
# 4、在本地建立一个数据库,发现可以同步到映射的文件夹
# 5、即使删除容器,本地依旧存在   实现了容器数据持久化
[root@zhujixiang data]# ls
auto.cnf    client-cert.pem  ibdata1      ibtmp1      private_key.pem  server-key.pem
ca-key.pem  client-key.pem   ib_logfile0  mysql       public_key.pem   sys
ca.pem      ib_buffer_pool   ib_logfile1  performance_schema  server-cert.pem  test_zjx

具名挂载和匿名挂载

# 匿名挂载
docker run -d -P /etc/nginx ngin# 查看所有的 volume 的情况
[root@zhujixiang /]# docker volume ls
DRIVER              VOLUME NAME
local               1f53f4e57b5c9a933e1982266f4d59bf24ffc75a13eed0a922284fe178356c2d
# 这里发现,这种就是匿名挂载,我们在 -v 的时候只写了容器内的路径,没有写容器外的路径!# 具名挂载
[root@zhujixiang home]# docker run -d -P -v juming-nginx:/etc/nginx nginx
[root@zhujixiang home]# docker volume ls
DRIVER              VOLUME NAME
local               juming-nginx
# 通过 -v 卷名:容器内路径
# 查看一下这个卷

 

所有的 docker 容器内的卷,没有指定目录的情况下都是在 /var/lib/docker/volumes/xxx 目录下

我们通过具名挂载可以更方便的找到一个卷,大多是情况下使用具名挂载

# 如何确定是匿名挂载还是具名挂载,还是指定路径挂载
-v 容器内路径             # 匿名挂载
-v 卷名:容器内路径        # 具名挂载
-v /宿主机路径:容器内路径  # 指定路径挂载

拓展:

# 通过 -v 容器内路径:ro  rw  改变读写权限
ro  readonly   # 只读
rw  readwrite  # 可读可写# 一旦这个设置了容器权限,容器对我们挂载出来的内容就有了限定
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:ro nginx
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:rw nginx
# 只要看到 ro 就说明只能通过宿主机来操作,容器内部没有办法操作,默认是 rw

初识Dockerfile

Dockerfile 就是用来构建 Docker 镜像的创建文件!命令脚本!体验一下!

# 创建一个 dockerfile 文件,名字可以随机 建议使用 dockerfile
# 文件中的内容  指令(大写)  参数
FROM centosVOLUME ["volume01","volume02"]CMD echo "----end----"CMD /bin/bash# 这里面每一个命令,就是镜像的一层

# 启动自己写的容器

这个卷和外部一定有一个同步的目录!

 

查看一下卷挂载的路径

测试一下刚才的文件是否同步出去了!

这种方式我我们未来使用的十分多,因为我们通常会构建自己的镜像!

假设构建镜像的时候我们没有挂载卷,要手动镜像挂载 -v 卷名:容器内路径

[root@zhujixiang home]# cd /var/lib/docker/volumes/60449cb067e6ca8d7f1185b2393f4f9a90d7edf0c8335a92267c5657d181496a/_data
[root@zhujixiang _data]# ls
container.txt

数据卷容器

两个 MySQL 同步数据!

# 启动3个容器,通过我们自己刚才写的镜像启动

# 测试:删除 docker01 ,查看一下 docker02 和 docker03 是否还可以访问这个文件
# 测试依旧可以访问文件

多个 mysql 实现数据共享

[root@zhujixiang /]# docker run -d -p 3310:3306 -v /etc/mysql/conf.d -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7[root@zhujixiang /]# docker run -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql02 --volumes-from mysql01 mysql:5.7# 这个时候,就可以实现两个容器数据同步!

结论

容器之间配置信息的传递,数据卷容器的生命周期一直持续到没有容器使用为止。

但是一旦你持久化到了本地,这个时候,本地的数据是不会删除的!

 PS:我只是一个刚刚开始学习 Docker 的小白,学习源自B站 遇见狂神说


http://chatgpt.dhexx.cn/article/lEH8M4Mi.shtml

相关文章

Supervisor 安装与配置

文章目录 Supervisor 安装与配置一、介绍二、名词释义三、Supervisor 安装三、Supervisor 配置四、启动控制终端五、注册为系统服务六、管理界面1、管理界面的弊端 Supervisor 安装与配置 一、介绍 ​ Supervisor 是用Python开发的一个 client/server 服务,是Linu…

使用Cesi+Supervisor实现进程管理

使用CesiSupervisor实现进程管理 相信很多的运维小伙伴都是饱受进程丢失的痛苦,最怕半夜被手机吵醒,那一定是经理想你 不管进程是前台运行还是后台静默运行,我们都需要能监控其进程状态。 原因有三: 一,在意外结束时…

echarts学习笔记1

可视化面板介绍 ​ 应对现在数据可视化的趋势,越来越多企业需要在很多场景(营销数据,生产数据,用户数据)下使用,可视化图表来展示体现数据,让数据更加直观,数据特点更加突出。 [外链图片转存失败,源站可能…

supervisor集群管理

1.介绍 Supervisor是一个进程管理工具,就是有一个进程需要每时每刻不断的运行,但是这个进程又有可能由于各种原因有可能停止运行。supervisor官网:http://www.supervisord.org/ 当进程停止运行的时候我们希望能自动重新启动,Super…

UOS桌面操作系统专业版字体

fc-list |sort| awk {print $1 } |uniq| wc -l cesi授权的字体 /usr/share/fonts/fonts-cesi/CESI_FS_GB13000.TTF: CESI仿宋\-GB13000,CESI_FS_GB13000:styleRegular /usr/share/fonts/fonts-cesi/CESI_FS_GB18030.TTF: CESI仿宋\-GB18030,CESI_FS_GB18030:styleRegular /…

罗马仕荣获中国质量认证中心、CESI颁发的全国首批“双新认证”证书

2022年11月25日,2022(冬季)亚洲户外电源大会于深圳市南山区科兴科学园ECO国际会议中心举办。本次大会由中国电子技术标准化研究院、北京京东世纪贸易有限公司、充电头网、全国电子产品安全标准化技术委员会、工信部锂离子电池及类似产品标准化…

supervisor 的 web 管理工具 cesi

一、supervisor 配置 说明:如果只是使用 supervisor 自带的 web,仅如下配置就可以vim /etc/supervisor/supervisord.conf[inet_http_server] ; inet (TCP) server disabled by default port192.168.5.149:9001 ; ip_address:port specif…

管理ELK进程工具: Supervisor Cesi

一、Supervisor简介 supervisor是一个Linux/Unix系统上的进程监控工具,supervisor是一个Python开发的通用的进程管理程序,可以管理和监控Linux上面的进程,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常…

CeSi 进程集中管理部署

一:安装环境 CentOs 7环境 sudo yum install -y git epel-releasesudo yum install -y python34 python34-pip 二: 安装CeSi https://github.com/Gamegos/cesi 有详细的安装步骤,需要安装一些工具 ## 安装yarn curl --silent --location http…

Linux 系统进程守护工具 cesi + superviosr

一、安装 Supervisor pip install supervisor 使用 echo_supervisord_conf 命令生成默认配置文件 echo_supervisord_conf > /etc/supervisord.conf 配置文件说明 位置:etc/supervisord.conf内容:# 指定了socket file的位置 [unix_http_server] f…

进程管理工具-Supervisord +CeSi

Supervisor 简介 Supervisor 是一个用 Python 写的进程管理工具,可以很方便的用来在 UNIX-like 系统(不支持 Windows)下启动、重启(自动重启程序)、关闭进程(不仅仅是 Python 进程) Superviso…

通过 CeSi + Supervisor 可视化集中管理服务器节点进程

通过 CeSi Supervisor 可视化集中管理服务器节点进程 简介Supervisor 的安装及基本使用1. 安装2. 基本使用 2.1 启动 supervisor2.2 Supervisor 客户端 supervisorctl安装配置 CeSi1. 简介2. 安装3. 配置4. 启动Supervisor 服务设置开机自启动参考链接 通过 CeSi Supervis…

第二篇supervisor集群管理工具cesi安装详解-如何安装supervisor-cesiwebUI

第二篇supervisor集群管理工具cesi安装详解-如何安装supervisor-cesiwebUI 介绍安装解压安装依赖修改配置注册为系统服务启动登录一下,发现报错了解决方法 介绍 前一篇我们安装好了supervisor,supervisor自带了一个UI界面,不太好用&#xff…

CeSi 安装与配置

文章目录 CeSi 安装与配置一、介绍二、CeSi 安装三、CeSi 配置四、CeSi 启动五、管理界面 CeSi 安装与配置 一、介绍 ​ CeSi(Centralized Supervisor Interface) 是 Supervisor 官方推荐的集中化管理 Supervisor 实例的 Web UI,该工具是用 Python 编写&#xff0…

iis发布网站时出现根目录文件解决方案

Window server 发布 vs打包的web应用时出现根目录文件 在web.config配置文件中 ,modules 节点前加上 runAllManagedModulesForAllRequests“true”

IIS 发布网站无法显示图片

发布网站以后,图片全是叉号。 1、先确认,IIS服务管理器下面没有MIME类型这个选项 2、参考设置权限,(我的程序是拷贝过来的): https://blog.csdn.net/yzm272/article/details/86506615 1、第一步打开IIS 控…

IIS发布网站及网页显示设置

本文调试系统中容易出现问题的系统有:Windows Service 2008R2、Windosw Service 2012R2 1、在上述两个系统中需要增加IIS服务器功能,需要在《添加角色功能增加》点击下一步中,添加IIS服务器功能即可,在增加功能的同时提供原系统文…

IIS部署 发布网站详细步骤(相见恨晚)

前言 新闻发布系统做完有一段时间了,可是自己怎么也发布不出去,琢磨了好几天,也没能顺利将新闻发布系统发布出来。甚是着急啊。站在巨人的肩膀上——找师哥帮忙。在他的指导下才知道自己的问题出现在哪里。下面详细展示一下发布的全过程。 …

IIS发布c#网站

目录 首先在VS上发布网站 在IIS上将发布好的网站部署上 首先在VS上发布网站 1.配置文件:下拉选择“新建自定义配置文件” 2.连接:发布选择“文件系统”,目标位置选择自己定义的文件夹目录 3.设置:配置下拉选择“Release”&…

创建asp网站iis发布网站用IP地址进行访问

1、创建asp网站 vs—新建—项目—web—asp.net空应用程序—确定—点击解决方案—右键添加—新建项目—visual c#类库—分别添加model,dal,bll层 2、我们要先在vs中发布 3、弹出网站发布设置面板&#xff0c;点击<新建..>,创建新的发布配置文件 输入你自己定义的配置文件…