docker数据持久化解决方案
  50hLQNjm0cyO 2023年11月02日 35 0

在现代软件开发领域中,Docker已经成为一种极为流行的容器化技术。它可以将应用程序和所有相关组件打包到一个独立的容器中,从而实现跨平台、跨系统的部署。然而,随着Docker的广泛应用,数据持久化问题渐渐暴露出来。

在传统的应用部署中,我们通常只需关注应用的安装和配置即可。然而,在容器化的环境中,容器是临时的,它们可以随时被删除和替换。这就使得数据的持久性成为一个持久的挑战。如果我们不妥善处理数据持久化,那么每次容器被更新或重新部署时,我们的数据都会遗失。

docker数据持久化解决方案_数据

例如在服务环境中,更多的时候我们想要的是将容器的某些数据保存下来;如服务的日志,MySQL 的数据等等。但如果不做其他的配置,在容器删除之后,数据也会随之删除;这显然不符合我们用户的需求。

而Docker提供了一种名为数据卷的机制,可以将宿主机的文件或目录挂载到容器中,从而实现数据的持久化存储。数据卷即是将文件或目录存在容器的外部,并通过挂载的方式将其与容器内部进行关联。数据卷的好处是可以保持数据的持久性,即使容器被删除,数据也会被保留下来。

以下演示Docker数据持久化的一种解决方案,供参考:

查看本机的volume

# docker volume ls

默认情况下应该是空的,可能是之前运行过 redis 的原因,我已经删除了所有容器。

mysql涉及参数可以参考以下链接

https://github.com/docker-library/docs/tree/master/mysql

运行mysql容器

注意:先运行mysql容器,生成volume

docker container run -d --name mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql:5.7

运行结果如下:

[root@iZj6c3g2v08zt442n9q9bhZ ~]# docker container run -d --name mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql:5.7
Unable to find image 'mysql:5.7' locally
5.7: Pulling from library/mysql
33847f680f63: Pull complete
5cb67864e624: Pull complete
1a2b594783f5: Pull complete
b30e406dd925: Pull complete
48901e306e4c: Pull complete
603d2b7147fd: Pull complete
802aa684c1c4: Pull complete
5b5a19178915: Pull complete
f9ce7411c6e4: Pull complete
f51f6977d9b2: Pull complete
aeb6b16ce012: Pull complete
Digest: sha256:be70d18aedc37927293e7947c8de41ae6490ecd4c79df1db40d1b5b5af7d9596
Status: Downloaded newer image for mysql:5.7
c0d2bad21a5a1b65aecc846c1005f8115efcc18f98f1c3d7a94b54fe24b371a0
[root@iZj6c3g2v08zt442n9q9bhZ ~]# docker container ps -a
CONTAINER ID   IMAGE                             COMMAND                  CREATED          STATUS                        PORTS                                           NA
MESc0d2bad21a5a   mysql:5.7                         "docker-entrypoint.s…"   18 seconds ago   Up 15 seconds                 3306/tcp, 33060/tcp                             m
ysql

进入容器创建数据库:

docker container exec -it mysql-demo /bin/sh
mysql> create database testting;
Query OK. 1 row affected (0.00 sec)

mysql>show databases;
+--------------------+
|  Database          |
+--------------------+
| information_schema |
| testting           |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 row in set  (0.00 sec)

查看volume情况

docker数据持久化解决方案_mysql_02

查看容器详情信息

docker数据持久化解决方案_mysql_03

删除容器查看,volume并没有被删除掉,而是保留下来

docker数据持久化解决方案_mysql_04

重新运行一个mysql挂载volume

docker container run -d --name mysql-demo-1 -v mysql-volume-demo:/var/lib/mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql:5.7

重新登录容器查看

mysql>show databases;
+--------------------+
|  Database          |
+--------------------+
| information_schema |
| testting           |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 row in set  (0.00 sec)

再次查看volume

docker数据持久化解决方案_mysql_05

关于奇墨ITQM

奇墨科技是全域数字资产质量管理平台及服务商,在全球创新提出了ITQM理念并自研了奇墨ITQM平台、ACS全云服务、QAPI、QTools工具等一系列数智化产品与服务,目前已帮助大量世界500强企业低成本引入全新IT治理体系和提升数字化管理能力。

旗下的奇墨ITQM平台,是业界第一个成功通过中国信通院《可信云•云成本优化工具能力要求第二部分 混合多云成本优化工具》评估的IT管理平台,可为企业提供FinOps成本优化、AIOps智能运维、全云管理、数据安全等QAPI能力,并通过自上而下的数字化管理模式、自动化的运维管理流程、专业化的解决方案与服务,助力企业加速“业务-技术-组织”之间的高效连接和协同,有效降低云成本支出、提高IT资源利用率和优化数字化业务决策,全面企业提升数字化价值。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论