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资源利用率和优化数字化业务决策,全面企业提升数字化价值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Docker中,数据卷是一种可用于在容器之间共享数据的特殊目录。它们是Docker持久化存储的一种解决方案,可以让您的数据容器之间非常容易地共享和重用,而不必担心数据的丢失或容器的删除。 在Nginx实战中,我们可以使用数据卷来存储Nginx配置文件和网站内容。这样做的好处是,我们可以轻松地更改Nginx的配置文件和网站内容,而不必重新构建Docker镜像。 以下是如何使用数据卷在Docker中运行Nginx的步骤: 1. 创建一个数据卷 首先,我们需要创建一个数据卷来存储Nginx配置文件和网站内容。我们可以使用以下命令来创建一个名为“nginx-data”的数据卷: ``` docker volume create nginx-data ``` 2. 编写Nginx配置文件 接下来,我们需要编写Nginx的配置文件。在本例中,我们将创建一个简单的Nginx配置文件,将其保存在数据卷中,并将其挂载到Nginx容器中。以下是一个简单的Nginx配置文件示例: ``` server { listen 80; server_name example.com; root /var/www/html; index index.html; } ``` 将此配置文件保存为“nginx.conf”,并将其放在我们刚刚创建的“nginx-data”数据卷中的“conf”目录中。 3. 准备网站内容 接下来,我们需要准备我们的网站内容,并将其保存在“nginx-data”数据卷中的“html”目录中。 为了演示目的,我们将在“html”目录中创建一个名为“index.html”的文件,其中包含以下内容: ``` <!DOCTYPE html> <html> <head> <title>My Website</title> </head> <body> <h1>Welcome to my website</h1> </body> </html> ``` 4. 运行Nginx容器 现在,我们已经准备好了Nginx配置文件和网站内容,我们可以运行Nginx容器并将数据卷挂载到容器中。我们可以使用以下命令来运行Nginx容器: ``` docker run -d -p 80:80 --name nginx -v nginx-data:/etc/nginx -v nginx-data:/var/www/html nginx ``` 此命令将运行Nginx容器,并将端口80映射到主机的端口80。它也将数据卷“nginx-data”挂载到容器的“/etc/nginx”目录和“/var/www/html”目录中,这样Nginx就可以读取配置文件和网站内容了。 5. 测试 现在,我们可以测试Nginx是否可以正常工作。我们可以使用浏览器访问http://localhost,应该会看到我们在“index.html”文件中编写的欢迎消息。 6. 更改Nginx配置文件和网站内容 如果我们需要更改Nginx配置文件或网站内容,我们只需要在“nginx-data”数据卷中进行更改即可。Nginx容器将自动读取并使用新的配置文件和网站内容。 总结 使用数据卷可以让我们轻松地在Docker中共享和重用数据。在Nginx实战中,我们可以使用数据卷来存储Nginx配置文件和网站内容,这样我们可以轻松地更改它们,而不必重新构建Docker镜像。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值