当前位置: 首页 > news >正文

Docker应用部署之mysql篇(day5)


文章目录

  • 前言
  • 一、问题描述
  • 二、解决方案
    • 1. 搜索 MySQL 镜像
    • 2. 拉取 MySQL 镜像
    • 3. 创建并运行 MySQL 容器
      • 参数说明:
    • 4. 验证容器是否运行
    • 5. 进入 MySQL 容器
  • 三、总结

前言

在日常开发和部署中,MySQL 是最常用的关系型数据库之一。借助 Docker,我们可以快速拉取 MySQL 镜像并运行容器,简化数据库的安装和管理。本文将详细介绍如何使用 Docker 部署 MySQL,包括镜像搜索、拉取、创建容器、端口映射和数据持久化等关键步骤。


一、问题描述

在实际项目中,我们通常需要一个可随时启停、易于管理的 MySQL 数据库。手动安装 MySQL 可能涉及较多的配置和依赖问题,而使用 Docker 方式可以大大简化这一过程。

本文的目标是使用 Docker 快速搭建 MySQL 数据库,并进行基本的端口映射和数据持久化,以便后续开发使用。


二、解决方案

1. 搜索 MySQL 镜像

首先,我们可以使用以下命令在 Docker Hub 中搜索 MySQL 相关镜像:

docker search mysql

执行后,将会返回一个 MySQL 相关镜像的列表,其中 mysql 是官方维护的镜像。

2. 拉取 MySQL 镜像

使用以下命令拉取 MySQL 官方镜像:

docker pull mysql:latest

如果需要指定特定版本,例如 MySQL 5.6,可以使用:

docker pull mysql:5.6

在这里插入图片描述

拉取完成后,可以通过 docker images 命令查看本地镜像列表。
在这里插入图片描述

3. 创建并运行 MySQL 容器

运行以下命令,创建MySQL的文件夹:

mkdir mysql
cd mysql

运行以下命令,在 Docker 中创建并启动一个 MySQL 容器:

docker run -id \
-p 3307:3306 \
--name=mysql_app \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.6

参数说明:

  • -i:使容器保持交互模式,允许用户进入。
  • -d:后台运行容器。
  • -p 3307:3306:将宿主机的 3307 端口映射到容器的 3306 端口,防止与本机已有的 MySQL 端口冲突。
  • --name=mysql_app:设置容器名称为 mysql_app
  • -v $PWD/conf:/etc/mysql/conf.d:将宿主机当前目录下的 conf 文件夹挂载到 MySQL 配置目录,方便修改配置。
  • -v $PWD/logs:/logs:将日志文件存储到宿主机的 logs 目录,方便查看日志信息。
  • -v $PWD/data:/var/lib/mysql:将 MySQL 数据库的数据文件存储到宿主机 data 目录,实现数据持久化。
  • -e MYSQL_ROOT_PASSWORD=123456:设置 MySQL root 用户的密码为 123456
  • mysql:5.6:使用 MySQL 5.6 版本。
    在这里插入图片描述

4. 验证容器是否运行

使用以下命令查看正在运行的容器:

docker ps

如果 MySQL 正常运行,你会看到 mysql_container 在列表中。

5. 进入 MySQL 容器

执行以下命令进入 MySQL 容器的 Shell,即可进入 MySQL 命令行

docker exec -it mysql_app mysql -uroot -p123456

在这里插入图片描述
部署成功!

三、总结

本文介绍了如何使用 Docker 部署 MySQL,包括:

  1. 搜索 MySQL 官方镜像
  2. 拉取 MySQL 镜像
  3. 创建 MySQL 容器并设置端口和数据持久化
  4. 验证容器状态并连接 MySQL

通过 Docker 部署 MySQL,避免了繁琐的手动安装过程,使开发环境更加轻量和高效。后续可以基于此进一步配置 MySQL,例如创建用户、调整字符集等。

相关文章:

  • 用Python掌握算法:初学者指南
  • springboot+mybatisplus
  • MySQL安装与卸载
  • 开源webmail邮箱客户端rainloop的分支版本SnappyMail 设置发件人允许多重身份
  • Linux一步部署主DNS服务器
  • 《DepMamba : Progressive Fusion Mamba for Mutilmodal Depression Detection》论文精读笔记
  • (九)Spring Webflux
  • 深度学习 Note.1
  • 海康HTTP监听报警事件数据
  • 从 MySQL 到时序数据库 TDengine:Zendure 如何实现高效储能数据管理?
  • 破局离散制造:主数据管理驱动数字化转型的实践与启示
  • Rabbitmq消息被消费时抛异常,进入Unacked 状态,进而导致消费者不断尝试消费(上)
  • BC93 公务员面试
  • 16-CSS3新增选择器
  • 从子查询到连接:提升数据库查询性能的 7 种方法
  • 生成式AI课程 比较好
  • C++:重载操作符
  • APM-基于Grafana生态以及OTLP协议的Java轻量级日志监控系统
  • Qt信号槽函数
  • springBoot中雪花算术法
  • 张译、惠英红分获第二十届中国电影华表奖优秀男、女演员奖
  • 5145篇报道中的上海车展:40年,什么变了?
  • 新任浙江省委常委、组织部长杨荫凯到嘉兴南湖瞻仰红船
  • 天津外国语大学原校长修刚突发疾病去世,享年68岁
  • 泽连斯基公布与特朗普会晤细节,强调实现全面、无条件停火
  • 坤莹·帕塔玛·利斯达特拉任世界羽联主席