当前位置: 首页 > 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中雪花算术法
  • 福州交警:一小型汽车因操作不当撞上汽车和电动车,致2人死亡
  • 徐丹任武汉大学药学院院长:研究领域在国际上处领跑地位
  • 德雷克海峡发生7.4级地震,震源深度10千米
  • 五一假期多地政府食堂对外开放:部分机关食堂饭菜“秒没”
  • 5月1日,全社会跨区域人员流动量完成33271.4万人次
  • 戴上XR头盔,五一假期在上海也能体验“登陆月球”