Docker如何部署Mysql8

发布时间:2022-07-07 09:45:17 作者:iii
来源:亿速云 阅读:400

Docker如何部署Mysql8

在现代软件开发中,Docker已经成为一种非常流行的容器化技术。它允许开发者将应用程序及其依赖项打包到一个轻量级的容器中,从而实现快速部署和跨平台运行。本文将详细介绍如何使用Docker部署MySQL 8,并探讨一些常见的配置和优化技巧。

1. 安装Docker

在开始之前,确保你的系统上已经安装了Docker。如果尚未安装,可以参考以下步骤进行安装:

安装完成后,启动Docker服务并设置开机自启:

sudo systemctl start docker
sudo systemctl enable docker

2. 拉取MySQL 8镜像

Docker Hub上提供了官方的MySQL镜像。我们可以通过以下命令拉取MySQL 8的镜像:

docker pull mysql:8.0

拉取完成后,可以使用以下命令查看已下载的镜像:

docker images

3. 运行MySQL容器

接下来,我们将使用Docker运行一个MySQL 8容器。以下是一个基本的命令示例:

docker run --name mysql8 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:8.0

解释: - --name mysql8:为容器指定一个名称,这里我们命名为mysql8。 - -e MYSQL_ROOT_PASSWORD=my-secret-pw:设置MySQL的root用户密码为my-secret-pw。 - -d:以守护进程模式运行容器。 - mysql:8.0:指定使用的镜像。

4. 连接到MySQL容器

容器启动后,我们可以通过以下命令进入容器的bash shell:

docker exec -it mysql8 bash

在容器内部,可以使用MySQL客户端连接到MySQL服务器

mysql -u root -p

输入之前设置的密码my-secret-pw,即可进入MySQL命令行。

5. 持久化数据

默认情况下,Docker容器中的数据是临时的,容器删除后数据也会丢失。为了持久化MySQL数据,我们可以将宿主机的目录挂载到容器的数据目录。

首先,在宿主机上创建一个目录用于存储MySQL数据:

mkdir -p /opt/mysql/data

然后,运行容器时使用-v参数挂载目录:

docker run --name mysql8 -e MYSQL_ROOT_PASSWORD=my-secret-pw -v /opt/mysql/data:/var/lib/mysql -d mysql:8.0

这样,MySQL的数据将存储在宿主机的/opt/mysql/data目录中,即使容器被删除,数据也不会丢失。

6. 配置MySQL

如果需要自定义MySQL的配置,可以将配置文件挂载到容器中。首先,在宿主机上创建一个配置文件:

mkdir -p /opt/mysql/conf.d
echo "[mysqld]" > /opt/mysql/conf.d/my-custom.cnf
echo "max_connections=200" >> /opt/mysql/conf.d/my-custom.cnf

然后,运行容器时挂载配置文件:

docker run --name mysql8 -e MYSQL_ROOT_PASSWORD=my-secret-pw -v /opt/mysql/data:/var/lib/mysql -v /opt/mysql/conf.d:/etc/mysql/conf.d -d mysql:8.0

这样,MySQL将使用自定义的配置文件。

7. 网络配置

默认情况下,MySQL容器使用Docker的桥接网络。如果需要从宿主机或其他容器访问MySQL,可以将容器的端口映射到宿主机的端口:

docker run --name mysql8 -e MYSQL_ROOT_PASSWORD=my-secret-pw -v /opt/mysql/data:/var/lib/mysql -p 3306:3306 -d mysql:8.0

这样,宿主机的3306端口将映射到容器的3306端口,可以通过localhost:3306访问MySQL。

8. 使用Docker Compose

为了简化管理,可以使用Docker Compose来定义和运行多个容器。创建一个docker-compose.yml文件:

version: '3.1'

services:
  mysql:
    image: mysql:8.0
    container_name: mysql8
    environment:
      MYSQL_ROOT_PASSWORD: my-secret-pw
    volumes:
      - /opt/mysql/data:/var/lib/mysql
      - /opt/mysql/conf.d:/etc/mysql/conf.d
    ports:
      - "3306:3306"

然后,使用以下命令启动服务:

docker-compose up -d

9. 常见问题与解决方案

9.1 容器启动失败

如果容器启动失败,可以使用以下命令查看日志:

docker logs mysql8

根据日志信息排查问题。

9.2 忘记root密码

如果忘记了MySQL的root密码,可以通过以下步骤重置:

  1. 停止容器:

    docker stop mysql8
    
  2. 以无密码模式启动容器:

    docker run --name mysql8 -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -v /opt/mysql/data:/var/lib/mysql -d mysql:8.0
    
  3. 进入容器并重置密码:

    docker exec -it mysql8 bash
    mysql -u root
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'new-password';
    
  4. 停止并重新启动容器。

10. 总结

通过Docker部署MySQL 8非常简单且灵活。我们可以通过挂载数据卷和配置文件来持久化数据和自定义配置,使用Docker Compose可以更方便地管理多个容器。希望本文能帮助你快速上手使用Docker部署MySQL 8,并在实际项目中发挥作用。

推荐阅读:
  1. Docker简单安装MySQL8方法
  2. docker下MySQL8基于GTID的主从复制如何完成部署

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

docker mysql8

上一篇:Python怎么使用pyecharts绘制箱形图

下一篇:Java如何实现字符串转为驼峰格式

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》