【Docker】7. Docker安装MySQL

196 阅读2分钟
  1. 在Docker Hub上搜索MySQL镜像

    20210909110056.png

    • Description:详细介绍了该镜像的用法。
    • Reviews:关于镜像的一些建议。
    • Tags:镜像可用版本。
  2. 在Tags中查找对应版本,复制命令并执行

    20210909110731.png

    docker pull mysql:8.0
    
  3. 仔细查看Description中如何使用MySQL镜像

    20210909143852.png

  4. 启动基本服务实例

    docker run -p 宿主机端口:3306 --name 容器名 -e MYSQL_ROOT_PASSWORD=root账户指定的密码 -d mysql:8.0
    

    -e表示environment,后面追加Docker给镜像设置的内部环境变量。

  5. 使用数据卷将数据持久化到宿主机

    像4中的命令虽然可以启动基本服务实例,但是数据是不安全的。如果该容器被删除,那么原来的数据就恢复不了了。所以要使用Docker数据卷持久化数据。

    在使用数据卷之前,我们必须知道MySQL保存数据的位置,又Description得知存储在容器中:/my/own/datadir

    20210909160517.png

    所以在运行镜像的同时需要挂载数据卷(自定义和手动都行,本文采用手动):

    docker run -p 宿主机端口:3306 --name 容器名 -e MYSQL_ROOT_PASSWORD=root账户指定的密码 -d -v 数据卷名称:/var/lib/mysql mysql:8.0
    

    在持久化数据时,不同容器不能使用宿主机中同一个目录去挂载,需要在宿主机中重新创建一个目录。

  6. 如果想要修改MySQL配置文件,让MySQL按照新配置文件运行

    对于配置文件的读取,一般有两种解决方案:

    • 对配置文件的目录做数据卷,然后在宿主机中修改即可(推荐)。
    • 使用cp命令将修改后的配置文件覆盖容器中的原配置文件。

    我们需要知道配置文件的目录,在Description得知:MySQL统一提供了一个核心配置文件:/etc/mysql/my.cnf,但是该文件不建议用户去修改配置信息(挂载数据卷后可以在宿主机中修改),用户如需添加自定义配置信息,需要去另一个配置文件中配置。根据MySQL镜像版本的不同,该配置文件会有两种,一种是:/etc/mysql/conf.d;另一种是:/etc/mysql/mysql.conf.d

    20210909162653.png

    所以我们应该在运行容器时,应该再挂载一个数据卷,将配置文件的目录也一并挂载

    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
    
  7. 在宿主机中修改/etc/mysql/my.cnf/etc/mysql/conf.d/etc/mysql/mysql.conf.d的内容,MySQL就可以生效

    有些配置修改完之后需要重新启动容器。