【赵渝强老师】数据库不适合Docker容器化部署的原因

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 本文介绍了在Docker中部署MySQL数据库并实现数据持久化的方法,同时分析了数据库不适合容器化的原因。通过具体步骤演示如何拉取镜像、创建持久化目录及启动容器,确保数据安全存储。然而,由于数据安全性、硬件资源争用、网络带宽限制及额外隔离层等问题,数据库服务并不完全适合Docker容器化部署。文中还提到数据库一旦部署通常无需频繁升级,与Docker易于重构和重新部署的特点不符。

b252-1.png

在Docker的容器中可以部署运行一个MySQL数据库,并通过数据卷将运行在容器中的MySQL数据库的数据进行持久化。如果这时候运行MySQL的容器被销毁了,数据也将会发生丢失。因此在Docker中部署数据库服务时,一定要考虑数据持久化的问题。但数据库并不适合Docker容器化部署。


视频讲解如下:


一、 【实战】在Docker部署MySQL


下面通过具体的步骤来演示如何在Docker容器中部署MySQL数据库,并通过挂载数据卷完成数据的持久化。


(1)从镜像仓库中拉取mysql镜像。

docker pull mysql:5.7


(2)在宿主机上创建MySQL数据持久化目录。

mkdir -p /data/mysql/conf
mkdir -p /data/mysql/data


(3)执行命令启动MySQL容器。

docker run -d -p 3306:3306 \
-v /data/mysql/conf:/etc/mysql \
-v /data/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=Welcome_1 \
--name mysqldemo \
mysql:5.7
# 提示:这条命令创建了挂载了两个数据卷,即以下两行配置参数:
# -v /data/mysql/conf:/etc/mysql 
# -v /data/mysql/data:/var/lib/mysql 
# 通过这两个数据卷将容器内部的MySQL配置文件和数据文件挂载到了宿主机上。


(4)在宿主机上执行命令查看“/data/mysql”目录。

tree -d -L 2 /data/mysql/
# 输出信息如下:
/data/mysql/
├── conf
└── data
    ├── mysql
    ├── performance_schema
    └── sys



二、 数据库不适合Docker及容器化的原因


由于Docker的容器是一个无状态的服务,因此就不适合将一个有状态的服务部署到Docker的容器中,例如数据库服务。这主要体现在以下几方面:


  • 数据的安全性:尽管Docker可以通过数据卷的方式将容器内的数据持久化存储到宿主机上,但任然不能保证不丢数据。如果容器崩溃并数据库未正确关闭,则可能会损坏数据。
  • 硬件资源的争用:通常在一台Docker的宿主机上往往会启动多个容器。如果将数据库的容器与其他应用的容器运行在同一个宿主机上,由于它们对硬件资源的要求是不同的,必然会造成资源的争用问题。
  • 网络带宽的占用:Docker的网络都是虚拟网络,通过宿主机上的docker0网桥进行转发。而数据库通常要求的网络带宽是比较高的。因此将数据库与其他应用都部署在同一个宿主机的容器中,网络带宽必然会成为数据库性能的瓶颈。
  • 数据额外的隔离:将数据库部署到容器中,毫无疑问增加了一层容器的隔离。这不利于数据库的水平扩展。


最后还需要说明的一点是,使用Docker的目的就是在于易于构建新环境和易于重新部署应用系统。而在实际情况中数据库一旦部署完成,很少会进行数据库的升级或者重新部署。因此从这一方面看,数据库也不适合Docker及容器化。



相关文章
|
1月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
395 108
|
27天前
|
运维 Devops 持续交付
揭秘 Docker 自动部署神器 Websoft9:热门开源软件一键部署
在企业IT建设中,软件部署常面临效率低、易出错等问题。通过Docker与自动化工具,可实现高效、标准化和可追溯的部署流程,提升企业应用交付效率,降低运维门槛,助力中小企业实现自动化部署。
129 5
揭秘 Docker 自动部署神器 Websoft9:热门开源软件一键部署
|
26天前
|
运维 监控 数据可视化
小白也能部署应用,3个免费的容器化部署工具测评
本文对比了三款容器化部署工具:Docker Compose、Portainer 和 Websoft9。Docker Compose 适合开发者编排多容器应用,Portainer 提供图形化管理界面,而 Websoft9 则面向中小企业和非技术人员,提供一键部署与全流程运维支持,真正实现“开箱即用”。三款工具各有定位,Websoft9 更贴近大众用户需求。
小白也能部署应用,3个免费的容器化部署工具测评
|
2月前
|
存储 关系型数据库 数据库
附部署代码|云数据库RDS 全托管 Supabase服务:小白轻松搞定开发AI应用
本文通过一个 Agentic RAG 应用的完整构建流程,展示了如何借助 RDS Supabase 快速搭建具备知识处理与智能决策能力的 AI 应用,展示从数据准备到应用部署的全流程,相较于传统开发模式效率大幅提升。
附部署代码|云数据库RDS 全托管 Supabase服务:小白轻松搞定开发AI应用
|
1月前
|
设计模式 Linux 开发工具
Docker部署会吗?
本段内容主要介绍了Docker常用命令、Linux基础指令及日志查看方法,还涉及SpringMVC的执行流程、设计模式与注解,适合用于面试中技术能力的展示。
65 0
|
27天前
|
运维 数据可视化 C++
2025 热门的 Web 化容器部署工具对比:Portainer VS Websoft9
2025年热门Web化容器部署工具对比:Portainer与Websoft9。Portainer以轻量可视化管理见长,适合技术团队运维;Websoft9则提供一站式应用部署与容器管理,内置丰富开源模板,降低中小企业部署门槛。两者各有优势,助力企业提升容器化效率。
162 1
2025 热门的 Web 化容器部署工具对比:Portainer VS Websoft9
|
1月前
|
关系型数据库 MySQL 数据库
为什么 MySQL 不推荐用 Docker 部署?
本文探讨了MySQL是否适合容器化的问题,分析了Docker容器在数据安全、性能瓶颈、状态管理及资源隔离等方面的挑战,并指出目前主流分布式数据库如TDSQL和OceanBase仍倾向于部署在物理机或KVM上。
|
2月前
|
NoSQL 安全 Redis
Docker Compose :从入门到企业级部署
Docker Compose 是用于定义和运行多容器应用的工具,支持服务、网络和卷三大核心要素。通过简洁的 YAML 文件,可实现应用的快速部署与管理,适用于开发、测试及生产环境。
177 1
|
1月前
|
应用服务中间件 网络安全 nginx
Docker部署 Alist
这里帮你整理一份使用 Docker 部署 Alist(一个开源的文件列表和管理工具)的详细步骤和示例,方便你快速启动。