Win10 使用 Docker 挂载本地宿主磁盘目录持久化安装 MySQL8.0

本文是自己先前在语雀中记录的一篇笔记,现在搬运到博客上,也请大家多多链接点赞:《20200315 Win10 使用 Docker 安装 MySQL8.0
win10如何安装docker请看我的上一篇博客 《Win10 用Hyper-V和容器安装 Docker

基础 docker 知识:

镜像相关操作:

docker基础中已经包含指令解释:详情点击 镜像的查看、拉取、删除

docker pull 镜像名称

docker pull 镜像名称 : 版本

docker image ps

容器的相关操作:

详细笔记内容点击:容器的相关操作指令与解释

本次安装的的全部指令

》 搜索镜像 docker hub

docker search 关键词

》docker run --name 容器名 -i -t -p 主机端口:容器端口 -d -v 主机目录:容器目录 镜像id或者镜像名:tag

# --name 指定容器名,可以自定义,不指定自动命名

# -i 以交互模式运行容器

# -t 分配一个伪终端,即命令行,通常-it组合来使用

# -p 宿主机port:容器port

# -d 后台运行并返回容器ID

# -v 宿主机目录:容器内目录,默认是rw读写模式,ro表示只读

》交互式方式创建容器

docker run -it --name=容器名称 镜像名称:标签 /bin/bash

守护式方式创建容器:

docker run -di --name=容器名称 镜像名称:标签

docker exec -it 容器名称 (或者容器ID) /bin/bash

》停止 / 启动容器

docker stop 容器名称(或者容器ID)

docker start 容器名称(或者容器ID)

》文件拷贝

docker cp 需要拷贝的文件或目录 容器名称:容器目录docker cp 容器名称:容器目录 需要拷贝的文件或目录如果你共享的是多级的目录,可能会出现权限不足的提示

安装mysql可以一条指令,也可以多条指令进行。一条指令的适合我们熟悉全部的指令后简便

MySQL镜像

打开 PowerShell 搜索 mysql 镜像

docker search mysql

在这里插入图片描述

安装,可以直接一步安装,因为执行 run 指令后,会搜索本地镜像,本地没有镜像会去 docker hub 上拉取镜像,也可以先拉取镜像。

一条指令执行安装

不挂载本地磁盘(重启后数据不会丢失,挂载本地默认文件)

docker run -itd --name mysql8 -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 mysql:8.0

# -it 交互式方式创建容器

# --name mysql8 容器的名称设置为 mysql8

# -e 传入的环境变量参数 MySQL必须需要一个初始的MYSQL_ROOT_PASSWORD参数作为 mysql root 用户的密码,才能构建启动。

#-p 宿主机port:容器port映射

#-d 后台运行镜像

挂载本地磁盘(不随系统自动启动)

docker run  --name mysql8 -p 3306:3306  -v /d/DockerSpace/mysql/data:/var/lib/mysql  -v /d/DockerSpace/mysql/log:/var/log/mysql  -v /d/DockerSpace/mysql/conf/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=root  -d mysql:8.0
# -v 宿主机目录:容器内目录,默认是rw读写模式,ro表示只读,默认只读
    /d/DockerSpace/...  是Windows系统中 D:/DockerSpace/... 执行指令的时候弹出确认是否挂载分享盘符D盘,点击确认即可

注意一点:

本地配置文件 my.cnf 不能为空,需要添加必要的配置信息(自行百度)。如下是我的 my.cnf 内容:

# The MySQL  Server configuration file.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
 
[mysql]
 
#设置mysql客户端默认字符集
default-character-set=utf8
 
[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
 
#服务端使用的字符集默认为8比特编码的latin1字符集
character_set_server = utf8
 
#创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
 
#设置不区分大小写
# 必须在安装好MySQL后 修改mySQL配置文件设置为不敏感,一旦启动后,再设置是无效的,而且启动报错;
# 如果已经晚了,那必须把MySQL数据库文件全部 删除,修改配置文件再启动。
lower_case_table_names=1

挂载本地磁盘(随系统自动启动)

docker run  --name mysql8 -p 3306:3306  -v /d/DockerSpace/mysql/data:/var/lib/mysql  -v /d/DockerSpace/mysql/log:/var/log/mysql  -v /d/DockerSpace/mysql/conf/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=root --restart=always  -d mysql:8.0
# --restart=always 创建容器时没有添加参数  --restart=always ,导致的后果是:当 Docker 重启时,容器未能自动启动。

分步安装

拉取镜像

默认拉取最新版

docker pull mysql

运行镜像

参见上面的 一条指令执行安装,第一次运行选择一种启动方式运行即可。
挂载默认磁盘目录:docker run -itd --name mysql8 -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 mysql:8.0
挂载自定义磁盘目录:docker run --name mysql8 -p 3306:3306 -v /d/DockerSpace/mysql/data:/var/lib/mysql -v /d/DockerSpace/mysql/log:/var/log/mysql -v /d/DockerSpace/mysql/conf/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0
后续直接运行对应的容器即可:docker run mysql:8.0

设置mysql

这时候如果用工具去连接mysql会提示不能登录,

先用 docker ps 查看运行中的容器,我的容器名称是 mysql8 以下文中容器名称都是使用 mysql8 来进行

进入mysql容器

docker exec -it mysql8 bash

docker exec -it mysql8 /bin/bash

在这里插入图片描述

修改 mysql 的 root 远程连接权限和密码

#容器内进入mysql

mysql -u root -p

#查看用户信息

select host,user,plugin,authentication_string from mysql.user;

#修改用户信息

ALTER user ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘123456’;

#刷新配置

flush privileges;

#查看用户信息,即可看到信息被修改

select host,user,plugin,authentication_string from mysql.user;

#退出mysql

exit;

#退出容器控制台

exit

在这里插入图片描述

连接 MySQL

在 Win10 中连接 Docker 中的 MySQL

在这里插入图片描述

最后

到此,可以利用 Docker 安装 MySQL 结束了,最后多说两点:

  1. 根据自己的需求使用随系统启动和不随系统启动,老版本可能不挂载本地文件夹重启数据会丢失,现在版本应该不存在了,这个我们可以自己去验证一下。

    1. 使用命令 docker inspect 容器id或名称 (例如 docker inspect mysql8)查看容器的详细配置信息,我们查找到 Mounts 配置项可以看到共享文件夹的映射配置在这里插入图片描述

    2. 使用容器安装一个应用,就像在文件夹中复制一个文件一样方便快捷, 一定要多动手,构建不成功可以删除容器(docker rm mysql8)重新构建。简而言之,言而总之,大胆造!

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值