docker安装mysql

  • Post author:
  • Post category: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=mysql

pid-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”连接一下试试呢。

连接成功。。。

撒花~


版权声明:本文为longfeng995原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。