使用Docker部署MySQL数据库的两种方法

 更新时间:2024年10月16日 11:16:15   作者:琴剑飘零西复东  
在现代软件开发中,MySQL 是一种流行的关系数据库管理系统,因其可靠性和易用性受到广泛欢迎,通过 Docker,可以快速、便捷地部署和管理 MySQL 数据库实例,本文将介绍两种通过 Docker 部署 MySQL 的方法,需要的朋友可以参考下

引言

在现代软件开发中,MySQL 是一种流行的关系数据库管理系统,因其可靠性和易用性受到广泛欢迎。通过 Docker,可以快速、便捷地部署和管理 MySQL 数据库实例。本文将介绍两种通过 Docker 部署 MySQL 的方法:使用 Docker CLI 命令和使用 Docker Compose。

第一部分:通过 Docker CLI 命令部署 MySQL

1. 安装 Docker

确保您的系统中已安装 Docker。若未安装,请参考 Docker 官方文档 进行安装。

2. 拉取 MySQL 镜像

首先,使用以下命令从 Docker Hub 拉取 MySQL 8.0 镜像:

docker pull mysql:8.0

3. 启动 MySQL 容器

接下来,使用以下命令启动 MySQL 容器:

docker run -d \
--name mysql-8.0 \
-e MYSQL_ROOT_PASSWORD=123456 \
-e MYSQL_DATABASE=my_database \
-e MYSQL_USER=run \
-e MYSQL_PASSWORD=123456 \
-p 3306:3306 \
-v mysql-data:/var/lib/mysql \
mysql:8.0 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_bin \
--lower_case_table_names=1
参数说明:
  • -d:以后台模式运行容器。
  • --name mysql-8.0:指定容器名称为 mysql-8.0
  • -e:设置环境变量,配置 MySQL 的 root 密码、默认数据库名称、用户及其密码。
  • -p 3306:3306:将主机的 3306 端口映射到容器的 3306 端口,以便外部访问数据库。
  • -v mysql-data:/var/lib/mysql:创建持久化卷,将容器中的数据存储在主机上,确保数据不丢失。
  • 最后,指定了字符集和排序规则以优化数据库支持。

4. 验证 MySQL 运行状态

运行以下命令检查容器是否已成功启动:

docker ps

若容器列表中出现 mysql-8.0,则表明部署成功。

5. 进入 MySQL 容器

您可以使用以下命令连接到 MySQL 数据库:

docker exec -it mysql-8.0 mysql -uroot -p123456

第二部分:通过 Docker Compose 部署 MySQL

Docker Compose 允许用户通过定义一个 docker-compose.yml 文件,方便地管理和启动多个服务。以下是通过 Docker Compose 部署 MySQL 的步骤。

1. 创建 docker-compose.yml 文件

在您的工作目录下,创建一个名为 docker-compose.yml 的文件,并输入以下内容:

version: '3.8'
services:
  mysql:
    image: mysql:8.0
    container_name: mysql-8.0
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: my_database
      MYSQL_USER: run
      MYSQL_PASSWORD: 123456
    ports:
      - "3306:3306"
    volumes:
      - mysql-data:/var/lib/mysql
    command:
      - mysqld
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_bin
      - --lower_case_table_names=1
    networks:
      - mysql-network

volumes:
  mysql-data:

networks:
  mysql-network:
    driver: bridge

2. docker-compose.yml 文件逐行解析

  • version: '3.8'
    指定 Docker Compose 文件的版本,3.8 适合大多数用户。

  • services:
    定义在 Docker 中运行的服务。

  • mysql:
    指定服务的名称,表示 MySQL 数据库服务。

  • image: mysql:8.0
    使用 MySQL 8.0 镜像,如果本地没有此镜像,Docker 会自动从 Docker Hub 下载。

  • container_name: mysql-8.0
    设置容器的名称,便于管理和识别。

  • environment:
    设置 MySQL 的环境变量:

    • MYSQL_ROOT_PASSWORD:root 用户的密码。
    • MYSQL_DATABASE:初始化时创建的数据库名称。
    • MYSQL_USER 和 MYSQL_PASSWORD:创建一个新用户及其密码。
  • ports:
    将主机的 3306 端口映射到容器的 3306 端口,以便外部访问数据库。

  • volumes:
    将主机上的 mysql-data 卷挂载到容器的 /var/lib/mysql 目录,确保数据的持久性。

  • command:
    指定 MySQL 启动时的命令参数,设置字符集和排序规则,以优化数据库的支持。

  • networks:
    定义容器使用的网络,mysql-network 允许容器之间进行通信。

  • volumes:
    创建一个名为 mysql-data 的卷,用于数据持久化。

  • networks:
    创建一个名为 mysql-network 的桥接网络,便于容器间的互联。

3. 启动 MySQL 服务

在 docker-compose.yml 文件所在的目录,执行以下命令启动服务:

docker-compose up -d

4. 验证服务状态

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

docker-compose ps

确保 mysql-8.0 容器正在运行。

5. 进入 MySQL 容器

使用以下命令访问 MySQL 数据库:

docker exec -it mysql-8.0 mysql -uroot -p123456

6. 停止和移除容器

要停止并删除容器,可以使用以下命令:

docker-compose down

总结

本文介绍了通过两种方法在 Docker 中部署 MySQL 数据库:通过 Docker CLI 命令和通过 Docker Compose 文件。每种方法都有其独特的优点,您可以根据项目需求和个人偏好选择适合的方式。

附:完整的 docker-compose.yml 文件内容

version: '3.8'
services:
  mysql:
    image: mysql:8.0
    container_name: mysql-8.0
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: my_database
      MYSQL_USER: run
      MYSQL_PASSWORD: 123456
    ports:
      - "3306:3306"
    volumes:
      - mysql-data:/var/lib/mysql
    command:
      - mysqld
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_bin
      - --lower_case_table_names=1
    networks:
      - mysql-network

volumes:
  mysql-data:

networks:
  mysql-network:
    driver: bridge

通过以上步骤,您可以快速在 Docker 中部署 MySQL 数据库,确保开发环境的灵活性和一致性。

到此这篇关于使用Docker部署MySQL数据库的两种方法的文章就介绍到这了,更多相关Docker部署MySQL数据库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决docker pull镜像报错的问题

    解决docker pull镜像报错的问题

    这篇文章主要介绍了解决docker pull镜像报错的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • docker build上下文的实现示例

    docker build上下文的实现示例

    Docker build上下文是构建Docker镜像时传递给Docker引擎的所有文件和目录的集合,可以提高构建效率,避免无用文件的传输,同时确保镜像构建过程的顺利进行,感兴趣的可以了解一下
    2025-09-09
  • docker容器日志占满硬盘空间的问题解决

    docker容器日志占满硬盘空间的问题解决

    由于默认情况下,docker使用json-file类型的日志驱动,该日志驱动默认情况下,每个容器的日志会一直追加在文件名为 containerId-json.log文件中,因此在容器不重建的情况下,该日志文件会一直追加内容,直到占满整个服务器硬盘空间,本文就来介绍一下解决方法
    2023-09-09
  • 使用Docker compose编排Laravel应用的方法

    使用Docker compose编排Laravel应用的方法

    本篇文章主要介绍了使用Docker compose编排Laravel应用的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • 使用GoogleContainerTools容器化jib构建docker镜像

    使用GoogleContainerTools容器化jib构建docker镜像

    这篇文章主要教大家如何使用GoogleContainerTools容器化jib构建docker镜像的实现,有需要的的朋友可以借鉴参考下希望能够有所帮助,祝大家多多进步
    2022-03-03
  • Docker Desktop 安装使用教程(图文步骤)

    Docker Desktop 安装使用教程(图文步骤)

    Docker是一种打包和运行应用程序的新方式. Docker Desktop是 Docker的Windows桌面版本,本文主要介绍了Docker Desktop安装使用教程,感兴趣的可以了解一下
    2024-02-02
  • Docker跨服务器通信Overlay解决方案(上)之 Consul单实例

    Docker跨服务器通信Overlay解决方案(上)之 Consul单实例

    这篇文章主要介绍了Docker跨服务器通信Overlay解决方案(上)之 Consul单实例,本文通过场景分析实例代码相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • 详解使用Docker容器来源码编译etcd

    详解使用Docker容器来源码编译etcd

    这篇文章主要介绍了详解使用Docker容器来源码编译etcd,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-03-03
  • Docker系统空间占用过大的清理方法详解

    Docker系统空间占用过大的清理方法详解

    在日常使用 Docker 的过程中,我们经常会发现服务器磁盘空间莫名其妙地被占满,特别是 /var/lib/docker/overlay2 目录动辄几十个 G,下面我们就来看看如何清理吧
    2025-11-11
  • Docker镜像拉取超时或失败的解决方法介绍

    Docker镜像拉取超时或失败的解决方法介绍

    在使用Docker进行容器化应用开发时,拉取镜像是一个常见的操作,本文将探讨Docker镜像拉取失败的原因及其解决方案,有需要的小伙伴可以参考一下
    2025-05-05

最新评论