使用 Docker 部署 MySql

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 使用 Docker 部署 MySql

前言
虽然不建议将需要持久化的数据保存在容器中,但是自己平时做个小项目玩玩还是没什么问题的。

拉取镜像
docker pull mysql
不加 tag 的话默认从 DockerHub 拉取最新版本的

启动容器
运行一下试试

docker run mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql_test mysql
这里的 -e 参数是必须指定的,作用是设置数据库的密码,否则将无法启动容器。

复制容器内的文件到宿主机

现在我们还没有进入容器,可以在宿主机的命令行中输入 docker ps 查看当前正在运行的容器,如果没出什么问题的话应该可以看到一个名为 mysql_test 的容器正在运行。在学习数据库的时候我们已经知道了 MySql 的数据库文件默认位于 /var/lib/mysql/ 中,配置文件在 /etc/mysql/conf.d 和 /etc/my.cnf。

我们不对默认的配置做更改,所以就没必要挂载 conf.d 目录到宿主机了,只需要映射一下容器内的数据库文件,以防止容器宕掉了导致数据的丢失。

docker cp mysql_test:/var/lib/mysql $PWD/
这里的 cp 命令作用是复制容器内的文件,后面的 $PWD 为 当前所在的宿主机目录,例如我现在的目录是 /home/hsk/box_container/mysql/,复制出来的 mysql 文件夹就会在我当前的路径下。

启动一个新的容器
将默认的数据库文件复制出来后,就可以删除之前测试用的容器了,在删除之前 我们要先停掉它:

docker stop mysql_test
删除旧容器:

docker rm mysql_test
创建一个新的容器并挂载卷,映射端口:

docker run \
-d \
--name mysql01 \
-p 3309:3306 \
-v /home/hsk/box_container/mysql01/conf.d/:/etc/mysql/conf.d \
-v /home/hsk/box_container/mysql01/mysql/:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql
-d 表示让容器在后台运行
--name 为容器起一个名字
-p 映射端口,这里把容器内的 3306 端口映射到了宿主机的 3309
-v 挂载卷,冒号前是宿主机目录,冒号后是容器内目录
-e 容器的环境配置

进入容器
使用 docker exec -it <容器ID|容器name> /bin/bash 指令进入模拟终端:

docker exec -it mysql01 /bin/bash
进入容器后,启动 MySql 交互命令行:

mysql -hlocalhost -uroot -p123456

查看数据库表:

mysql> show databases;
Database
information_schema
mysql
performance_schema
sys

4 rows in set (0.00 sec)
外部挂载进来的默认数数据库表都正常加载了

创建新的数据库
由于我的数据库基础不是很好,而且过了很长时间已经忘了基本所有的 SQL语句,所以这里使用 DBeaver 图形化数据库工具来创建数据库和添加数据,类似于大家上课时用到的 Navicat

防火墙放行端口:

在创建容器的时候我们指定了对外映射端口 3309,所以要放行该端口以供外网访问,如果像我一样使用云服务商提供的服务器的话具体去官网控制台放行一下端口就行了,如果是在自己家搭建的服务器在有 公网IP 的条件下去路由器管理界面设置,本机的话就不需要配置了。

使用 DBeaver 连接数据库:

新建连接 -> mysql

没有报错就说明连接成功了

创建数据库:

右键「数据库」,选择「新建」,我起名为 FruitDatabase

新建表:

选择「数据库」,点击「创建」-> 「表」,我起名为 fruit_table

新增列,配置主键:

直接点击鼠标操作就行,无需输入任何 SQL语句,但是要了解数据类型、键等基础知识。我创建的字段如下所示 ↓

再随便添加点数据:

回到容器
插入数据完成后,进入容器中检查下:

docker exec -it mysql01 /bin/bash

bash-4.4# mysql -hlocalhost -uroot -p123456

mysql> show databases;
Database
FruitDatabase
information_schema
mysql
performance_schema
sys

5 rows in set (0.00 sec)

mysql> use FruitDatabase
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

mysql> show tables;
Tables_in_FruitDatabase
fruit

1 row in set (0.00 sec)

mysql> select * from fruit_table;
fruit_name fruit_id price stock avatar
????? 1 24.20 70 http://www.xxx.com/apple.jpg
????? 2 74.20 80 http://www.xxx.com/pears.jpg
???? 3 78.40 190 http://www.xxx.com/jujube.jpg
????? 4 78.00 8 http://www.xxx.com/jackfruit.jpg
????? 5 24.20 70 http://www.xxx.com/litchi.jpg

5 rows in set (0.00 sec)

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4天前
|
关系型数据库 MySQL 数据库
docker高级篇(大厂进阶):安装mysql主从复制
docker高级篇(大厂进阶):安装mysql主从复制
50 24
|
12天前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
73 26
|
1月前
|
人工智能 API 数据安全/隐私保护
使用 Docker 一键免费部署 63.8k 的私人 ChatGPT 网页应用
NextChat 是一个可以在 GitHub 上一键免费部署的私人 ChatGPT 网页应用,支持 GPT3、GPT4 和 Gemini Pro 模型。该项目在 GitHub 上获得了 63.8k 的 star 数。部署简单,只需拉取 Docker 镜像并运行容器,设置 API Key 后即可使用。此外,NextChat 还提供了预设角色的面具功能,方便用户快速创建对话。
161 22
使用 Docker 一键免费部署 63.8k 的私人 ChatGPT 网页应用
|
21天前
|
Java 关系型数据库 MySQL
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
39 5
|
20天前
|
Java 应用服务中间件 Docker
将基于 Spring 的 WAR 应用程序部署到 Docker:详尽指南
将基于 Spring 的 WAR 应用程序部署到 Docker:详尽指南
23 2
|
26天前
|
Java Linux Docker
什么是 Docker?如何将 Spring Boot 应用程序部署到 Docker?
什么是 Docker?如何将 Spring Boot 应用程序部署到 Docker?
41 3
|
1月前
|
机器学习/深度学习 数据采集 Docker
Docker容器化实战:构建并部署一个简单的Web应用
Docker容器化实战:构建并部署一个简单的Web应用
|
1月前
|
监控 前端开发 Java
【技术开发】接口管理平台要用什么技术栈?推荐:Java+Vue3+Docker+MySQL
该文档介绍了基于Java后端和Vue3前端构建的管理系统的技术栈及功能模块,涵盖管理后台的访问、登录、首页概览、API接口管理、接口权限设置、接口监控、计费管理、账号管理、应用管理、数据库配置、站点配置及管理员个人设置等内容,并提供了访问地址及操作指南。
|
1月前
|
运维 开发者 Docker
Docker Compose:简化容器化应用的部署与管理
Docker Compose:简化容器化应用的部署与管理
|
1月前
|
Docker 微服务 容器
使用Docker Compose实现微服务架构的快速部署
使用Docker Compose实现微服务架构的快速部署
58 1
下一篇
DataWorks