-
在Docker Hub上搜索MySQL镜像
- Description:详细介绍了该镜像的用法。
- Reviews:关于镜像的一些建议。
- Tags:镜像可用版本。
-
在Tags中查找对应版本,复制命令并执行
docker pull mysql:8.0 -
仔细查看Description中如何使用MySQL镜像
-
启动基本服务实例
docker run -p 宿主机端口:3306 --name 容器名 -e MYSQL_ROOT_PASSWORD=root账户指定的密码 -d mysql:8.0-e表示environment,后面追加Docker给镜像设置的内部环境变量。
-
使用数据卷将数据持久化到宿主机
像4中的命令虽然可以启动基本服务实例,但是数据是不安全的。如果该容器被删除,那么原来的数据就恢复不了了。所以要使用Docker数据卷持久化数据。
在使用数据卷之前,我们必须知道MySQL保存数据的位置,又Description得知存储在容器中:
/my/own/datadir所以在运行镜像的同时需要挂载数据卷(自定义和手动都行,本文采用手动):
docker run -p 宿主机端口:3306 --name 容器名 -e MYSQL_ROOT_PASSWORD=root账户指定的密码 -d -v 数据卷名称:/var/lib/mysql mysql:8.0在持久化数据时,不同容器不能使用宿主机中同一个目录去挂载,需要在宿主机中重新创建一个目录。
-
如果想要修改MySQL配置文件,让MySQL按照新配置文件运行
对于配置文件的读取,一般有两种解决方案:
- 对配置文件的目录做数据卷,然后在宿主机中修改即可(推荐)。
- 使用cp命令将修改后的配置文件覆盖容器中的原配置文件。
我们需要知道配置文件的目录,在Description得知:MySQL统一提供了一个核心配置文件:
/etc/mysql/my.cnf,但是该文件不建议用户去修改配置信息(挂载数据卷后可以在宿主机中修改),用户如需添加自定义配置信息,需要去另一个配置文件中配置。根据MySQL镜像版本的不同,该配置文件会有两种,一种是:/etc/mysql/conf.d;另一种是:/etc/mysql/mysql.conf.d。所以我们应该在运行容器时,应该再挂载一个数据卷,将配置文件的目录也一并挂载
docker run -p 宿主机端口:3306 --name 容器名 -e MYSQL_ROOT_PASSWORD=root账户指定的密码 -d -v 数据卷名称1:/var/lib/mysql -v 数据卷名称2:/etc/mysql/conf.d mysql:8.0 -
在宿主机中修改
/etc/mysql/my.cnf、/etc/mysql/conf.d或/etc/mysql/mysql.conf.d的内容,MySQL就可以生效有些配置修改完之后需要重新启动容器。