准备
- centos7的服务器,可以是虚拟机
- 安装了docker
- 如果需要持久化数据,那么建立目录
/usr/local/docker/mysql/data
/usr/local/docker/mysql/conf
/usr/local/docker/mysql/logs
开始搭建
一般目前我们常用的 Mysql 版本是 5.7
所以先拉取镜像:
docker pull mysql:5.7
不持久化运行
MYSQL_ROOT_PASSWORD 设置密码
docker run -p 3306:3306 \
--name mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7
持久化运行
把容器中对应目录下的数据映射到 宿主机的对应目录中,可以保证 mysql的Container 丢失后,数据不会丢失。
docker run -p 3306:3306 --name mysql \
-v /usr/local/docker/mysql/conf:/etc/mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7
检查
查看容器是否正常运行,ok 后可用使用工作去链接
docker container ls
2023/02/27 update
按照上面的方法安装出现如下问题 特此记录,第一眼认为是权限问题,结果加了
--privileged=true 也没有解决,相当于让容器的权限提高到 root,不然相当于一个普通用户。
mysql 文档更新说明
https://dev.mysql.com/doc/refman/5.7/en/binary-installation.html
意思是配置文件有变化,所以可以先起一个默认容器,查看下配置文件位置,然后去做映射配置即可
新起一个 mysql:5.7 的容器,通过 docker cp 命令把 容器内的配置文件复制到 /usr/local/docker/mysql/conf/
docker cp 62cc:/etc/mysql/ /usr/local/docker/mysql/conf/
修改了 /usr/local/docker/mysql/conf/ 为 /usr/local/docker/mysql/conf/mysql
因为把新起的容器的配置文件复制到了 /usr/local/docker/mysql/conf/
docker run -p 3306:3306 --name mysql -v /usr/local/docker/mysql/conf/mysql/:/etc/mysql -v /usr/local/docker/mysql/logs:/var/log/mysql -v /usr/local/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
最后启动成功
评论区