乐趣区

关于docker: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 状况

查看容器详情信息

删除容器查看,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 资源利用率和优化数字化业务决策,全面企业晋升数字化价值。

退出移动版