共计 2538 个字符,预计需要花费 7 分钟才能阅读完成。
在古代软件开发畛域中,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 资源利用率和优化数字化业务决策,全面企业晋升数字化价值。