当前位置: 首页 > news >正文

docker安装mysql

在安装Mysql之前,我们可以先查看一下我们的镜像,输入命令:

docker images

能发现,镜像里面只有一个Nginx,并没有Mysql

然后我们可以像上一篇安装Nginx一样,安装Mysql镜像。

输入以下命令,安装Mysql镜像:

docker pull mysql:8.0.32

最后看见:"Status: Downloaded newer image for mysql:8.0.32",就代表下载成功。

再查看一下镜像,输入命令:

docker images

能看到,因为我们是指向下载"mysql 8.0.32"版本,所以TAG标签给出的也是8.0.32

如果有的同学,使用的是 "latest"下载,那么TAG标签,也会给出 "latest"。

那么这时候,需要查看安装的镜像具体版本是多少,可以看一下这篇文章:

docker镜像latest具体是哪个版本其实docker也有提供镜像具体版本的获取方式。docker 中 image 镜像管理image 中有一个inspect显示一个或多个图像的详细信息那么组合一下,就是这样:https://blog.csdn.net/longfeng995/article/details/128828905

以上,mysql镜像就安装好了。

好的,镜像安装好后,同学们能发现,直接去启动mysql 是找不到的。

因为这只是镜像,我们还需要创建它的容器,并且启动容器才可以。

我们可以先查看一下容器,输入命令:

docker ps -a

可以看到,只有一个Nginx容器,这个Nginx,是我们之前创建的。

那么需要创建一个mysql容器

输入下面的命令:

docker run --name mysql-test -p 3306:3306 -v D:/docker/mysql/my.cnf:/etc/my.cnf -v D:/docker/mysql/mysqld.log:/var/log/mysqld.log -v D:/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d IMAGE ID

命令中,各项参数解释:

run    在新容器中运行命令

--name    为容器分配一个名称。上面我们分配的名称就叫"mysql-test"

-p    将容器的端口发布到。上面的"3306:3306",就是将我们的3306端口,映射到容器里的3306端口,第一个3306就是我们环境中的,第二个3306是docker容器中的

-v    绑定挂载卷。就拿其中第一个"D:/docker/mysql/conf.d:/etc/mysql/conf.d"说明,前者很容易看出,我的环境是Windows环境,所以是D盘,然后一直到 conf.d 配置目录,中间有一个英文冒号":"就是映射到docker容器中的"conf.d"配置目录,将两者进行绑定,这样我们在"D:/docker/mysql/conf.d"中修改配置,docker容器中的配置文件,也会相对应跟着修改。

-d    在后台运行container并打印容器ID

执行到这里,容器也就成功安装好了。我们来看一下容器的状况。

输入命令查看:

docker ps -a

这样容器就运行成功了。

我们去测试一下,打开"Navicat Premium"

连接后就是这样的了。默认情况是这样的。

但是!!!这是一切正常的情况,如果不正常呢?

在 run 容器的时候,如下图,会出现一系列错误。 

这个意思,其实跟之前 Nginx 的容器是一样的,配置文件错误。

我们想要的是一个文件,但是这里却是文件夹,为什么呢?

既然我们是Windows 下面玩的,来看看"我的电脑"里,我们指定的目录是什么样的:

看到啦,我们的"my.cnf"和"mysqld.log"这两个是目录,而这两个,一个是配置文件,另一个是日志文件,是文件来的喔。

会出现这样,是因为我们上面运行docker时,检测到我们当前目录里没有对应的文件,所以自动生成,但是生成了目录。。。

所以我们需要修改成这样:

因为"my.cnf"是我们的配置文件,所以需要进行配置的哈。默认配置是下面这样:

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M# Remove leading # to revert to previous value for default_authentication_plugin,
# this will increase compatibility with older clients. For background, see:
# https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin
# default-authentication-plugin=mysql_native_password
skip-host-cache
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
secure-file-priv=/var/lib/mysql-files
user=mysqlpid-file=/var/run/mysqld/mysqld.pid
[client]
socket=/var/run/mysqld/mysqld.sock!includedir /etc/mysql/conf.d/

将上面的直接copy到"my.cnf"文件里即可。

然后我们来启动容器,命令:

docker start CONTAINER ID

查看容器:

docker ps

状态是已经运行了哈。

然后我们再去"Navicat Premium"连接一下试试呢。

连接成功。。。

撒花~

http://www.lryc.cn/news/3686.html

相关文章:

  • Leetcode 回溯详解
  • AI_Papers:第一期
  • C/C++内存管理
  • 【大数据hive】hive 函数使用详解
  • 彻底搞懂分布式系统服务注册与发现原理
  • 安卓Camera2用ImageReader获取NV21源码分析
  • 24. 两两交换链表中的节点
  • linux006之帮助命令
  • 【C++初阶】十三、模板进阶(总)|非类型模板参数|模板的特化|模板分离编译|模板总结(优缺点)
  • Linux之文本搜索命令
  • 微信小程序Springboot 校园拼车自助服务系统java
  • 【Unity3D 常用插件】Haste插件
  • 【c++面试问答】全局变量和局部变量的区别
  • Java List集合
  • linux服务器挂载硬盘/磁盘
  • Java 抽象类
  • OpenPPL PPQ量化(5):执行引擎 源码剖析
  • 【脚本开发】运维人员必备技能图谱
  • N字形变换-力扣6-java
  • 概论_第5章_中心极限定理1__定理2(棣莫弗-拉普拉斯中心极限定理)
  • 详细解读503服务不可用的错误以及如何解决503服务不可用
  • 【前端vue2面试题】2023前端最新版vue模块,高频17问(上)
  • 数据库(三):多版本并发控制MVCC,行锁的衍生版本,记录锁,间隙锁, Next-Key锁(邻键锁)
  • c# 自定义隐式转换与运算符重载
  • 【MyBatis】| MyBatis的逆向⼯程
  • Python|每日一练|哈希表|罗马数字|图算法|圆周率|单选记录:给定数列和|罗马数字转整数|计算圆周率
  • 分布式之分布式事务V2
  • 算法笔记(二)—— 认识N(logN)的排序算法
  • 最长湍流子数组——滚动窗口,双指针,暴力求解
  • 45.在ROS中实现global planner(1)