【Docker】Docker部署MySQL
✨Docker
本文介绍Docker Desktop以及docker命令行的简单使用
Docker Desktop安装使用请查阅官方文档
Get Docker | Docker Documentation
在Windows上安装Dockers Desktop可参考
【Docker】Docker Desktop for Windows(WSL 2)安装 - 双份浓缩馥芮白 - 博客园 (cnblogs.com)
似乎一般都是用docker命令行较多
毕竟都用docker了对命令行肯定相对熟悉
✨Docker部署MySQL
使用Docker部署MySQL非常方便
并且对于Windows系统来说
由于不需要在本机安装MySQL
再也没有多版本冲突或者是卸载不干净等问题
当然其他众多环境也可以使用docker部署
使用Docker部署MySQL只需要以下步骤
- 拉取镜像
- 启动容器
- 连接数据库
不再需要此容器时仅需要
- 终止容器
- 删除容器
点击进入Docker Hub MySQL官方页面
https://hub.docker.com/_/mysql/
查看镜像相关介绍
环境变量
启动镜像时,您可以通过在命令行上传递一个或多个环境变量来调整 MySQL 实例的配置。请注意,如果使用已包含数据库的数据目录启动容器,则以下变量都不会产生任何影响:任何预先存在的数据库在容器启动时将始终保持不变。
MYSQL_ROOT_PASSWORD
此变量是必需的,并指定将为MySQL超级用户账户设置的密码。
MYSQL_DATABASE
此变量是可选的,允许您指定要在映像启动时创建的数据库的名称。如果提供了用户/密码(见下文),则该用户将被授予对此数据库的超级用户访问权限(对应于 GRANT ALL
)。
MYSQL_USER
, MYSQL_PASSWORD
这些变量是可选的,与创建新用户和设置该用户的密码结合使用。此用户将被授予对变量指定的数据库的超级用户权限(见上文)。这两个变量都是创建用户所必需的。MYSQL_DATABASE
请注意,没有必要使用此机制来创建根超级用户,默认情况下使用该变量指定的密码创建该用户。MYSQL_ROOT_PASSWORD
MYSQL_ALLOW_EMPTY_PASSWORD
这是一个可选变量。设置为非空值(如 ),以允许使用 root 用户的空白密码启动容器。注意:除非您真的知道自己在做什么,否则不建议将此变量设置为 ,因为这会使您的 MySQL 实例完全不受保护,从而允许任何人获得完整的超级用户访问权限。yes``yes
MYSQL_RANDOM_ROOT_PASSWORD
这是一个可选变量。设置为非空值,如 ,为 root 用户生成随机初始密码(使用 )。生成的根密码将打印到 stdout ()。yes``pwgen``GENERATED ROOT PASSWORD: .....
MYSQL_ONETIME_PASSWORD
初始化完成后,将 root(而不是 !中指定的用户)用户设置为已过期,强制在首次登录时更改密码。任何非空值都将激活此设置。注意:此功能仅在MySQL 5.6 +上受支持。在MySQL 5.5上使用此选项将在初始化期间引发适当的错误。MYSQL_USER
MYSQL_INITDB_SKIP_TZINFO
默认情况下,入口点脚本会自动加载函数所需的时区数据。如果不需要,任何非空值都会禁用时区加载。CONVERT_TZ()
数据存储的位置
下文仅演示部署,不将数据目录挂载到主机上
如果需要保留容器数据卷,请按如下操作将容器数据目录挂载到主机上
否则删除容器时如果同时删除相关联匿名卷将删除所有数据库
重要说明:有几种方法可以存储 Docker 容器中运行的应用程序使用的数据。我们鼓励图像的用户熟悉可用的选项,包括:mysql
- 让 Docker 使用自己的内部卷管理将数据库文件写入主机系统上的磁盘,从而管理数据库数据的存储。这是默认设置,对用户来说很容易且相当透明。缺点是,对于直接在主机系统(即外部容器)上运行的工具和应用程序,可能很难找到这些文件。
- 在主机系统(容器外部)上创建一个数据目录,并将其挂载到容器内部可见的目录中。这会将数据库文件放置在主机系统上的已知位置,并使主机系统上的工具和应用程序能够轻松访问这些文件。缺点是用户需要确保目录存在,并且主机系统上的目录权限和其他安全机制设置正确。
Docker 文档是了解不同存储选项和变体的良好起点,并且有多个博客和论坛帖子在此领域进行讨论并提供建议。我们将在这里简单地展示上述后一个选项的基本过程:
-
在主机系统上的合适卷上创建一个数据目录,例如 。
/my/own/datadir
-
像这样启动容器:
mysql
$ docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
该命令的一部分从底层主机系统挂载目录,就像在容器内一样,默认情况下MySQL将在其中写入其数据文件。-v /my/own/datadir:/var/lib/mysql``/my/own/datadir``/var/lib/mysql
✨使用docker命令行
拉取镜像
搜索镜像
docker search mysql
也可以进入
mysql - Official Image | Docker Hub
查找所需要的容器镜像
拉取最新版镜像
docker pull mysql
拉取MySQL 5.7镜像
docker pull mysql:5.7.41
创建并运行新容器
创建容器设置如下:
设置容器名称为mysql5.7 / mysql8
设置映射容器端口到主机3306端口
设置MySQL root用户密码为root
未挂载卷(将使用匿名卷)
如果需要保留容器数据卷,请将容器数据目录挂载到主机上
docker run -itd --name mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7.41
docker run -itd --name mysql8 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:latest
命令行参数介绍
--interactive , -i Keep STDIN open even if not attached
--tty , -t Allocate a pseudo-TTY
--detach , -d Run container in background and print container ID
--env , -e Set environment variables
详情可参考docker官方文档
docker run | Docker Documentation
连接数据库
启动容器
启动已停止容器
docker start ${CONTAINER}
${CONTAINER}
可以填写实例名称或者是实例名称ID,下同。
终止容器
docker stop ${CONTAINER}
删除容器
只删除容器实例,不删除容器相关联匿名卷
docker rm ${CONTAINER}
此后如果需要删除匿名卷
docker volume ls
查看VOLUME NAME
然后
docker volume rm ${VOLUME_NAME}
删除容器实例 同时删除容器相关联匿名卷
!如果需要保留容器数据卷,请在创建容器时将容器数据目录挂载到主机上
docker rm -v ${CONTAINER}
docker rm --volumes ${CONTAINER}
✨使用Docker Desktop
拉取镜像
可以进入
mysql - Official Image | Docker Hub
查找所需要的容器镜像
Docker Desktop使用CTRL
+ K
快捷键可以直接搜索镜像并且可以自定义选择所需版本
创建并运行新容器
创建容器设置如下:
设置容器名称为mysql5.7
设置映射容器端口到主机3306端口
设置MySQL root用户密码为root
未挂载卷(将使用匿名卷)
如果需要保留容器数据卷,请将容器数据目录挂载到主机上
设定好相关参数后点击Run创建并运行新容器
连接数据库
启动容器
启动已停止容器
在Containers中选择容器点击Start
终止容器
在Containers中选择容器点击Stop
删除容器
在Containers中选择容器点击Delete
删除容器实例 同时删除容器相关联匿名卷
!如果需要保留容器数据卷,请在创建容器时将容器数据目录挂载到主机上
⭐转载请注明出处
本文作者:双份浓缩馥芮白
原文链接:https://www.cnblogs.com/Flat-White/p/18006024
版权所有,如需转载请注明出处。