一、查找镜像
查找Docker Hub上的mysql镜像
docker search mysql

二、拉取镜像
默认拉取最新版的mysql 8.0的:sudo docker pull mysql

三、查看镜像
拉取完成后 看下镜像是否成功拉取
sudo docker images [镜像名]

四、配置文件
这里我们讲讲为什么我要采取挂载的方式以及我怎么知道配置文件在哪?
好的,接下来我们一一解答
- 为什么我要采取挂载的方式?
有状态服务是指: 需要数据存储功能的服务、或者指多线程类型的服务,队列等。(mysql、redis、kafka、zookeeper等)
Docker容器原则上是短暂的,如果容器被删除或损坏,任何数据或配置都将丢失
- 怎么知道配置文件在哪?
- 大家部署的 MySQL,大概文件路径不一致。我们可以先创建个测试的 MySQL 容器,然后再根据查找出的文件具体路径位置,重新创建我们符合我们需求的 MySQL 容器,命令如下:
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql

- 查找数据文件位置 进入Docker容器内
输入
sudo docker exec -it mysql bash进入Docker容器内,然后数据mysql --help|grep 'my.cnf'查找Docker容器内,Mysql配置文件my.cf的位置

`order of preference, my.cnf, $MYSQL_TCP_PORT,` 路径按优先排序,/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf
配置文件的路径不一定都一样,有些位置是在/etc/my.cnf。而我ubuntu系统上,实际存在位置是在/etc/my.cnf
查找数据文件位置 用于在容器上运行docker inspect命令的JSON输出具有一个 Mount密钥,其值提供了有关数据目录卷的信息:


输出显示源文件夹:/var/lib/docker/volumes,表示已安装在 /var/lib/mysql容器内的服务器数据目录中
这样就可以把相关路径了解清楚
五、挂载配置文件
接下来,我们需要在宿主机上,创建一个数据和配置文件的挂载路径
sudo mkdir -p /usr/local/src/mysql/conf && sudo mkdir -p /usr/local/src/mysql/data

创建好宿主机的挂载数据路径后,我们将测试容器里 MySQL 的配置文件复制到该路径。后面要是修改配置直接修改宿主机的配置文件即可。
sudo docker cp mysql:/etc/my.cnf /usr/local/src/mysql/conf

六、启动容器
启动前需要将之前的安装测试的删除掉
sudo docker rm -f mysql
启动命令
sudo docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -v /usr/local/src/mysql/conf/my.cnf:/etc/my.cnf -v /usr/local/src/mysql/data:/var/lib/mysql -v /usr/local/src/mysql/log:/var/log/mysql --restart=on-failure:3 -d mysql

实现服务自启动 启动命令
sudo docker run --restart=always --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -v /usr/local/src/mysql/conf/my.cnf:/etc/my.cnf -v /usr/local/src/mysql/data:/var/lib/mysql -v /usr/local/src/mysql/log:/var/log/mysql --restart=on-failure:3 -d mysql


注:异常情况
如果如下图所示,运行容器时报错,因为Ubuntu安全Selinux禁止了一些安全权限,导致mysql和mariadb在进行挂载/var/lib/mysql的时候会提示如下信息

解决办法:在docker run中加入 --privileged=true 给容器加上特定权限
sudo docker run --privileged=true --name mysql
-p 3306:3306 -e MYSQL_ROOT_PASSWORD=root
-v /usr/local/src/mysql/conf/my.cnf:/etc/my.cnf
-v /usr/local/src/mysql/data:/var/lib/mysql
-v /usr/local/src/mysql/log:/var/log/mysql
–restart=on-failure:3
-d mysql
查看是否启动成功
sudo docker ps
查看启动日志
sudo docker logs -f mysql
到此为止,Docker中安装Mysql总结已写完,喜欢的粉丝点个关注吧,我会持续更新软件开发相关的技术。

本文详细介绍了如何在Docker中查找、拉取mysql镜像,配置文件挂载,包括为何选择挂载方式、配置文件位置查找、数据文件位置、宿主机路径创建及挂载、启动容器并处理SELinux权限问题。
7514

被折叠的 条评论
为什么被折叠?



