【Docker】之安装 MySQL

1、下载 MySQL 镜像


下载最新版本MySQL 镜像(TAG 默认为 latest):

docker pull mysql

下载指定版本MySQL 镜像(以 5.7 版本为例):

docker pull mysql:5.7

更多 MySQL 版本镜像:

1)进入 docker 镜像官网:https://hub.docker.com/,在镜像搜索栏中输入 MySQL,选择 MySQL 官方镜像:
在这里插入图片描述
2)进入 MySQL 详情页面后,点击 Tags 切换到标签页面,可以看到各个版本的 MySQL 镜像:
在这里插入图片描述

2、创建并运行 MySQL 容器


创建并运行命令:

docker run -d -p 3306:3306 \
	-v /mydata/mysql/log:/var/log/mysql \
	-v /mydata/mysql/data:/var/lib/mysql \
	-v /mydata/mysql/conf:/etc/mysql \
	-e MYSQL_ROOT_PASSWORD=123456 \
	--name=mysql \
	mysql:5.7

参数说明:

  • -d:在后台运行 MySQL
  • -p 3306:3306: 将容器的 3306 端口映射到主机的 3306 端口;
  • -v /mydata/mysql/log:/var/log/mysql:把容器中的 MySQL 的日志文件夹 /var/log/mysql 挂载到主机路径 /mydata/mysql/log/ 中;
  • -v /mydata/mysql/data:/var/lib/mysql:把容器中的 MySQL 的数据库文件夹 /var/lib/mysql 挂载到主机路径 /mydata/mysql/data/ 中;
  • -v /mydata/mysql/conf:/etc/mysql:把容器中的 MySQL 的配置文件夹 /etc/mysql 挂载到主机路径 /mydata/mysql/conf/ 中;
  • -e MYSQL_ROOT_PASSWORD=123456:设置 root 用户密码;
  • --name=mysql:将容器命令为 mysql
  • mysql:5.7MySQL 镜像名称;

查看启动结果:

docker ps -l
------------
CONTAINER ID   IMAGE       COMMAND                  CREATED         STATUS         PORTS                                                  NAMES
bc4e04860781   mysql:5.7   "docker-entrypoint.s…"   1 minutes ago   Up 5 minutes   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql

设置 docker 启动时运行自动 MySQL可选):

docker update mysql --restart=always

3、修改 MySQL 配置文件


在主机挂在 MySQL 配置目录中添加配置文件:

vi /mydata/mysql/conf/my.cnf

配置文件内容如下:

[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
init_connect='SET collation_connection = utf8mb4_unicode_ci'
init_connect='SET NAMES utf8mb4'
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

重启 MySQL 容器:

docker restart mysql

进入 MySQL 容器中也可以看到相应的配置文件:

docker exec -it mysql /bin/bash
---------------------------------
user@7b295c46c99d /: ls /etc/mysql/
my.cnf

4、相关建议


使用 Docker 部署 MySQL 会面临以下几个问题:

  • 数据持久化:使用 Docker 部署 MySQL 需要将数据存储在 Docker 容器中,这意味着在删除容器时可能会导致数据丢失。为了解决这个问题,需要将数据存储在主机上或使用数据卷,这增加了一些复杂性。
  • 性能问题:在 Docker 容器中运行 MySQL 会导致一些性能问题。例如,如果容器内存不足, MySQL 可能会因为内存不足而崩溃。此外,Docker 容器需要额外的虚拟化开销,这可能会导致 MySQL分在容器中运行的速度较慢。
  • 安全问题:使用 Docker 部署 MySQL 可能会导致安全问题。例如,容器中的 MySQL 可能会受到容器逃逸攻击的威胁,因为容器中的其他进程可能会访问 MySQL 容器的文件系统。
  • 复杂性:使用 Docker 部署 MySQL 可能会增加部署和管理的复杂性。需要考虑容器网络配置、数据卷挂载、容器间通信等问题。相比之下,直接在主机上安装和配置 MySQL 可能更加简单和直接。

所以,不建议正式服用 Docker 部署 MySQL。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值