首页 > 数据库 >【Docker】使用Docker部署MySQL

【Docker】使用Docker部署MySQL

时间:2024-02-04 13:22:47浏览次数:30  
标签:容器 部署 MySQL MYSQL mysql Docker docker

✨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

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

标签:容器,部署,MySQL,MYSQL,mysql,Docker,docker
From: https://www.cnblogs.com/Flat-White/p/18006024

相关文章

  • 一键部署Palworld幻兽帕鲁服务器最佳实践
    本文基于天翼云通用型云主机,为您介绍通过镜像一键部署Palworld幻兽帕鲁服务器的具体操作。Ubuntu系统1.按需购买云主机。通过Palworld专属活动优惠页一键购买开通云主机。 根据需要选择资源池及订购时长,点击立即订购。 支付成功后返回云主机控制台,选择订购云主机所在的资......
  • 卸载centos源码安装的mysql
    关闭mysql查看安装的mysqlrpm-qa|grep-imysql卸载安装的mysqlrpm-evmysql-community-client-8.0.11-1.el7.x86_64--nodeps--nodeps强制卸载删除mysql相关目录whereismysqlfind/-namemysqlrm-rf目录rm命令文件一旦通过rm命令删除,则无法恢复;删除文件......
  • MySQL8.0.26安装部署
    一.安装1.下载安装包文件官网地址:https://www.mysql.com/下载地址:https://downloads.mysql.com/archives/installer/(注意:如果之前已经安装MySQL,需要卸载旧版MySQL,然后再安装此版本,卸载请参考我的“MySQL8.0.26卸载”文档)下载好安装包后,双击安装包,根据提示进行安装2.根据......
  • Docker安装mysql8
    1.下载mysql8镜像(版本根据自己选择:这里是8.0.20)dockerpullmysql:8.0.20 2.启动镜像dockerrun-p3307:3306--namemysql8-eMYSQL_ROOT_PASSWORD=123456-dmysql:8.0.20 参数注解 检查是否启动成功dockerps 3.配置挂载创建挂载目录(请检查保证创建成......
  • MYSQL回滚
     MSYQL回滚 STARTTRANSACTION;事务中执行的SQL语句COMMIT;ROLLBACK; 如果是默认提交回滚的话 showmasterstatus;  file是bin-log的名称  pos是事务节点  showbinlogeventsin'mysql-bin.001003';  查看事务事件 pos是开始  eng_log_......
  • java直连mysql操作数据
    连接器importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;/***@author:chenKeFeng*@date:2024/1/3010:21*/publicclassMySQLConnector{pri......
  • Docker笔记(一)docker 在linux里面的安装
    Docker笔记(一)docker在linux里面的安装为什么使用docker(docker理念)在开发环境,将源码+配置+软件等其他项目运行的所有的东西,都打包,直接都给运维,这样运维就不需要自己搭建项目运行的环境了,因为你已经拿到了开发人员本地的全部的东西,相当于拿到开发人员全部的东西,直接在运维那里就......
  • Redis部署
    使用系统:OpenKylin1.0.1Redis版本:7.2.3安装Redis本文采用离线安装安装c++环境sudoapt-getinstallgcc//检查c++是否安装成功gcc-v下载离线包官网地址:https://redis.io/download/编译Redis源码本文Redis下载压缩包存放路径为:/usr/local/redis-7.2.3.tar.gz//......
  • pid文件未生成:mysqld_safe mysqld from pid file /usr/local/mysql/data/mysql.pid en
    问题/usr/local/mysql/bin/mysqld_safe--defaults-file=/usr/local/mysql/conf/my.cnf--user=mysql该命令启动mysql时,未启动成功,终端输出下列报错:2024-02-03T02:56:51.449040Zmysqld_safeLoggingto'/usr/local/mysql/mysqllog/logfile/mysql-err.log'.2024-02-03T02:......
  • dremio cluster docker-compose 运行
    dremio社区版,集群安装比较简单,核心就是一个配置(zk,分布式存储),为了方便本地环境的测试我基于docker-compose提供了一个方便部署的环境,可以使用环境配置docker-compose version:"3"services:zk:image:zookeeperports:-2181:21......