docker--持久化存储

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: docker--持久化存储

前戏


假设我们启动了一个 mysql 容器,我们添加的数据都是在容器里面的,当容器挂掉之后我们的数据也会丢失。我们可以把容器内部的数据存放到宿主机上,当容器挂掉之后也不影响我们的数据。

可以在执行 Docker create 或者 docker run 时,通过 -v 参数 将主机的目录作为容器的数据卷,这部分的功能是基于本地文件系统的 volume 管理。


数据持久化 Data Volume


如果你看过 mysql 的 Dockerfile,里面有一行是这样的 VOLUME [/var/lib/mysql] ,意思就是启动一个 mysql 的容器时,会将容器里面的 /var/lib/mysql 里的文件挂载到宿主机上

启动 mysql5.7 的镜像

docker run -d --name mydb -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql:5.7

-e MYSQL_ALLOW_EMPTY_PASSWORD=true 表示密码可以为空

查看 volume

docker volume ls

上面的 VOLUME NAME 对应的我们挂载的名字,那他的路径是在哪里?我们可以通过 docker volume inspect <VOLUME NAME>来查看

docker volume inspect 自己的VOLUME NAME

如果删除容器,volume 是不会删除的

删除 volume,通过 docker volume rm <VOLUME NAME>

docker volume rm 6c6de0ab3191ee293b

这个默认的 VOLUME NAME 太不好记了,我们也可以在启动容器的时候,加个 -v 参数自己指定

docker run -d --name mydb -v mysql:/var/lib/mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql:5.7

其中的 mysql 就是 VOLUME NAME 的值,:后面的是 mysql 容器里存放数据的地方

我们进入到容器内部创建一个 zouzou 的数据库

docker exec -it mydb /bin/bash
mysql -uroot -p

删除 mydb 容器,在创建一个新的 mysql 容器,指定 -v 参数,挂载到之前 VOLUME NAME 为 mysql 的上面

进入到容器内部,查看刚才我们新建的 zouzou 数据库是否存在

可以看到,我们创建的 zouzou 数据库是存在的,这样的话,当我们的容器出现事故之后,只需要重新启动一个,挂载到之前的 VOLUME NAME 上就可以了


数据持久化 Bind Mouting


data volume 需要在 Dockerfile 定义 Volume

bind mounting 只需要 -v 指明 容器外部文件夹和容器映射文件夹的对应关系即可 将本地的文件映射到容器内

还是用mysql镜像举例,使用 bind mouting

docker run -d --name db -v /tmp/test:/var/lib/mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql:5.7

进入到宿主机的/tmp/test目录下。ls

bind mouting还有一个好处,我们可以把宿主机的代码挂载到容器内部,当我们修改宿主机的代码之后,就可以看到效果了,方便我们调试代码


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
存储 关系型数据库 MySQL
Docker的持久化存储和数据共享(四)
有些容器会自动产生一些数据,为了不让数据随着 container 的消失而消失,保证数据的安全性。例如:数据库容器,数据库的表会产生一些数据,如果我把 container 给删除,数据就丢失。为了保证数据不丢失,这就有了 Volume 的存在。
272 0
Docker的持久化存储和数据共享(四)
|
存储 Docker 容器
Docker - 数据持久化存储 Data Volume & Bind Mount
Docker - 数据持久化存储 Data Volume & Bind Mount
125 0
|
存储 关系型数据库 数据库
生产环境中Docker的持久化存储模式
本文讲的是生产环境中Docker的持久化存储模式【编者的话】在生产环境中使用Docker实现持久化存储一直是业界的热点问题,本文从到配置文件、机密材料、数据库、共享数据等方面做了些探讨,文中也谈到了一些需要避免的问题以及尽量将应用设计为无状态服务的原则。
2399 0
|
18天前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
161 77
|
26天前
|
监控 Docker 容器
在Docker容器中运行打包好的应用程序
在Docker容器中运行打包好的应用程序
|
4天前
|
Unix Linux Docker
CentOS停更沉寂,RHEL巨变限制源代:Docker容器化技术的兴起助力操作系统新格局
操作系统是计算机系统的核心软件,管理和控制硬件与软件资源,为用户和应用程序提供高效、安全的运行环境。Linux作为开源、跨平台的操作系统,具有高度可定制性、稳定性和安全性,广泛应用于服务器、云计算、物联网等领域。其发展得益于庞大的社区支持,多种发行版如Ubuntu、Debian、Fedora等满足不同需求。
19 4
|
19天前
|
数据建模 应用服务中间件 nginx
docker替换宿主与容器的映射端口和文件路径
通过正确配置 Docker 的端口和文件路径映射,可以有效地管理容器化应用程序,确保其高效运行和数据持久性。在生产环境中,动态替换映射配置有助于灵活应对各种需求变化。以上方法和步骤提供了一种可靠且易于操作的方案,帮助您轻松管理 Docker 容器的端口和路径映射。
63 3
|
26天前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
67 7
|
26天前
|
存储 Prometheus 监控
Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行
本文深入探讨了在Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行。
32 5
|
26天前
|
开发框架 安全 开发者
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。本文探讨了 Docker 在多平台应用构建与部署中的作用,包括环境一致性、依赖管理、快速构建等优势,以及部署流程和注意事项,展示了 Docker 如何简化开发与部署过程,提高效率和可移植性。
57 4

热门文章

最新文章