使用 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)
由于字符集的问题导致显示中文字符会出问题,这只是在命令行中会发生这种情况
使用 Docker 部署 MySql的更多相关文章
- Docker 部署mysql
目录 Docker 部署mysql 步骤 1.查找 Docker Hub 上的 MySQL 镜像 2.docker pull mysql 拉取镜像 3.运行容器 4.查看容器启动情况 使用命令备注 D ...
- docker(部署常见应用):docker部署mysql
上节回顾:docker(部署常见应用):docker部署nginx docker部署mysql:5.7.26 # 下载镜像 docker pull mysql: # 查看镜像 docker image ...
- docker部署mysql Navicat远程连接
docker部署mysql Navicat远程连接 docker search mysql 查看mysql镜像(是去dockerHub网站搜素镜像,遇到问题可以去该网站查看官方文档,纯英文文档估计 ...
- Docker:Docker部署mysql数据库
docker部署mysql : 8.0 1.在宿主机创建mysql挂载目录 #创建目录 mkdir /home/mysql/conf mkdir /home/mysql/logs mkdir /hom ...
- springboot多数据源配合docker部署mysql主从实现读写分离
本篇主要有两部分: 1.使用docker部署mysql主从 实现主从复制 2.springboot项目多数据源配置,实现读写分离 一.使用docker部署mysql主从 实现主从复制 此次使用的是wi ...
- docker 部署mysql tomcat时 在root@localhost~下——-——docker exec -it 容器名 /bin/bash 报错
在docker部署mysql时 报错 找不到 容器不自动启动 , docker start 容器名 也没有效果 多次尝试发现 原因是创建容器时在 下面创建的 更改为下创建 问题解决
- Docker部署mysql 5.7
Docker部署mysql 5.7 准备工作 在CentOS或者Linux创建部署目录,用于存放容器的配置和MySQL数据:目的是当重装或者升级容器时,配置文件和数据不会丢失.执行以下命令: a.创建 ...
- Centos7借助docker部署mysql,提供远程链接服务
Centos7 借助docker部署mysql,并提供远程连接服务 安装docker 运行docker 注意安装docker和运行docker的步骤很简单,可以参考我学习docker的笔记 docke ...
- Docker部署MySql应用
1. MySQL部署 1.1拉取MySQL镜像 docker pull mysql 查看镜像 docker images 1.2创建MySQL容器 docker run -di --name piny ...
- docker 部署mysql redis
先介绍利用的两个数据卷挂载的规则,这对于理解挂载mysql数据库存储非常有帮助. 如果挂载一个空的数据卷到容器中的一个非空目录中,那么这个目录下的文件会被复制到数据卷中. 如果挂载一个非空的数据卷到容 ...
随机推荐
- 【摘译+整理】System.IO.Ports.SerialPort使用注意
远古的一篇博客,内容散落于博文和评论 https://sparxeng.com/blog/software/must-use-net-system-io-ports-serialport C# 和 . ...
- 【微信小程序】 自定义组件
创建微信小程序组件 在小程序中创建组件: 1.项目根目录中创建[components]目录,存放自定义组件 2.进入components目录,给组件创建一个组件目录 3.右键组件目录,选择[创建Com ...
- 【Vue】Re23 组件封装
视频地址: https://www.bilibili.com/video/BV15741177Eh?p=119 common.css /* 演示案例是base.css */ body { paddin ...
- 【转载】PPT上作图转化为矢量图 —— 论文写作必备技能
原文地址: https://www.cnblogs.com/scandit/p/15112138.html PPT作出的图本身就为矢量图(可以插入到Word中),另存为PDF后,再通过PDF专业工具适 ...
- 面向分布式强化学习的经验回放框架——Reverb: A Framework for Experience Replay
论文题目: Reverb: A Framework for Experience Replay 地址: https://arxiv.org/pdf/2102.04736.pdf 框架代码地址: htt ...
- 2.6倍!WhaleTunnel 客户POC实景对弈DataX
作为阿里早期的开源产品,DataX是一款非常优秀的数据集成工具,普遍被用于多个数据源之间的批量同步,包括类似Apache DolphinScheduler的Task类型也对DataX进行了适配和增强, ...
- Binance 如何使用 Quickwit 构建 100PB 日志服务(Quickwit 博客)
三年前,我们开源了 Quickwit,一个面向大规模数据集的分布式搜索引擎.我们的目标很宏大:创建一种全新的全文搜索引擎,其成本效率比 Elasticsearch 高十倍,配置和管理显著更简单,并且能 ...
- jenkins集成findBugs并生成报告
转
公司使用jenkins来作为持续构建工具,由于要进行自动化构建.编译.代码走查.打包.今天介绍下 jenkins集成findbugs的经验. 1.首先进入jenkins插件管理页面,下载途中的find ...
- 直接在jsp页面上使用flex标签
1:去ADOBE下载FLEX的TAGLIB for JSP. http://download.macromedia.com/pub/labs/flex2_tag_library_jsp/flex2_t ...
- QGroupBox自定义样式(仿DotNetBar)
QSS如下: QGroupBox { border:1px solid gray; border-radius:5px; margin-top:3ex; font-size:10pt; color:# ...