在古代软件开发畛域中,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.7Unable to find image 'mysql:5.7' locally5.7: Pulling from library/mysql33847f680f63: Pull complete5cb67864e624: Pull complete1a2b594783f5: Pull completeb30e406dd925: Pull complete48901e306e4c: Pull complete603d2b7147fd: Pull complete802aa684c1c4: Pull complete5b5a19178915: Pull completef9ce7411c6e4: Pull completef51f6977d9b2: Pull completeaeb6b16ce012: Pull completeDigest: sha256:be70d18aedc37927293e7947c8de41ae6490ecd4c79df1db40d1b5b5af7d9596Status: Downloaded newer image for mysql:5.7c0d2bad21a5a1b65aecc846c1005f8115efcc18f98f1c3d7a94b54fe24b371a0[root@iZj6c3g2v08zt442n9q9bhZ ~]# docker container ps -aCONTAINER ID   IMAGE                             COMMAND                  CREATED          STATUS                        PORTS                                           NAMESc0d2bad21a5a   mysql:5.7                         "docker-entrypoint.s…"   18 seconds ago   Up 15 seconds                 3306/tcp, 33060/tcp                             mysql

进入容器创立数据库:

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状况

查看容器详情信息

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

从新运行一个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

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

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