【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 文档是了解不同存储选项和变体的良好起点,并且有多个博客和论坛帖子在此领域进行讨论并提供建议。我们将在这里简单地展示上述后一个选项的基本过程:

  1. 在主机系统上的合适卷上创建一个数据目录,例如 。/my/own/datadir

  2. 像这样启动容器: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


连接数据库

image-20230128154339117


启动容器

启动已停止容器

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快捷键可以直接搜索镜像并且可以自定义选择所需版本

image-20230128153506289


创建并运行新容器

创建容器设置如下:

设置容器名称为mysql5.7

设置映射容器端口到主机3306端口

设置MySQL root用户密码为root

未挂载卷(将使用匿名卷)

如果需要保留容器数据卷,请将容器数据目录挂载到主机上


设定好相关参数后点击Run创建并运行新容器

image-20230128153911644


连接数据库

image-20230128154339117


启动容器

启动已停止容器

在Containers中选择容器点击Start

image-20230208020801646


终止容器

在Containers中选择容器点击Stop

image-20230208020918995


删除容器

在Containers中选择容器点击Delete

删除容器实例 同时删除容器相关联匿名卷

!如果需要保留容器数据卷,请在创建容器时将容器数据目录挂载到主机上

image-20230208021004628

image-20230208021021194


⭐转载请注明出处

本文作者:双份浓缩馥芮白

原文链接:https://www.cnblogs.com/Flat-White/p/18006024

版权所有,如需转载请注明出处。

posted @ 2024-02-04 13:18  双份浓缩馥芮白  阅读(407)  评论(0编辑  收藏  举报