docker desktop 安装

  1. 从官网直接下载

Docker: Accelerated, Containerized Application Development

  1. 确认开启H-v

 

  1. 安装好后出现下图所示,需要通过命令行更新wsl

$ wsl –update

挂载mysql卷报错问题

创建mysql容器

docker run -p 3306:3306 --name mysql-server -e MYSQL_ROOT_PASSWORD=123456 -v D:/docker/mysql/log:/var/log/mysql -v D:/docker/mysql/data:/var/lib/mysql -v D:/docker/mysql/conf:/etc/mysql --privileged=true -d mysql:5.7

记录一个docker 安装mysql的小问题,查了一下网上说的,说的是权限的问题,但是我仔细一瞧发现并不是,权限问题的话应该是这样的
mysqld:Can’t read dir of ‘/etc/mysql/conf.d’
(Errcode:13 -Permission denied) mysqld:[ERROR]Fat

在容器的运行命令加上
–privileged=true即可,
但是我试着没有效果,很明显我这个并不是权限的问题,后来想到有可能是挂载目录出现的问题。结果还真是。用如下的方法就能解决。
首先拉取镜像

docker pull mysql:5.7

然后安装mysql

docker run -p 3306:3306 --name mysql -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d  mysql:5.7

但是通过命令docker ps查看没有这个容器

docker ps

查看运行日志docker logs 容器id
查看容器id(以下命令可以查看全部容器,包括启动失败的)

docker ps -a


查看容器的启动日志

docker logs 33e03e9baa15

报错如下:

就是不存在/etc/mysql/conf.d这个目录

原因:
我们在书写创建容器的命令出了问题


我们这个挂载目录出了问题,我的理解是mysql容器的/etc/mysql目录挂载到宿主机的 /mydata/mysql/conf目录,由于宿主机的 /mydata/mysql/conf是空的,所以找不到/etc/mysql/conf.dconf.d这个目录,导致容器创建失败。我这么做的目的是将配置文件挂载到宿主机,但是 我查看mysql官网发现这个挂载方式已经不适用了,配置文件已经不再/etc/mysql里了,里面只有两个空目录,分别是conf.dmysql.conf.d,这两个目录里面什么都没有。真正的配置文件是/etc/my.cnf,因此需要修改。
mysql官网地址

解决方法:先随意创建一个mysql容器

docker run -d -e MYSQL_ROOT_PASSWORD=root mysql:5.7

查看运行的容器

docker ps


mysql容器中的/etc/mysql中的mysql目录下的文件复制到宿主机/mydata/mysql/conf目录下
命令格式:docker cp 容器id:容器内目录 宿主机目录

docker cp 4b1a0fe53315:/etc/mysql/ /mydata/mysql/conf

这样的话/mydata/mysql/conf下就有conf.dmysql.conf.d两个空文件夹了,查看 官网说明,/etc/my.cnf里面有以下两行,大意就是my.cnf这个配置文件又包含了/etc/mysql/conf.d//etc/mysql/mysql.conf.d/目录下的配置文件,所以我们可以把cnf后缀结尾的配置文件放进下面 两个文件夹中,达到修改默认配置的作用。

!includedir /etc/mysql/conf.d/    
!includedir /etc/mysql/mysql.conf.d/

然后把这个容器删掉

docker rm -f 4b1a0fe53315

创建一个mysql:5.7.9的容器,复制/etc/mysql/my.cnf

docker run -d -e MYSQL_ROOT_PASSWORD=root mysql:5.7.9
docker cp 4b1a0fe53315:/etc/mysql/my.cnf /mydata/mysql/conf/mysql.conf.d

然后把这个容器删掉

重新创建一个容器

docker run -p 3306:3307 --name mysql -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d  mysql:5.7

查看容器是否成功运行,如下图可以看到容器正常运行了,说明已经成功了。

docker ps

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值