最近因为破电脑不知道啥情况mysql服务突然不能启动了,所以就开始使用 Docker。还没使用就出现了Hyper异常问题,因此就想着把安装全过程及错误问题整理一下,供各位同学参考借鉴。
docker 安装 mysql 环境
一、思考❓❔
1.什么是Docker?
装应用的容器
开发、测试、运维都偏爱的容器化技术
轻量级
扩展性
一次构建、多次分享、随处运行
步骤
第一步,安装 docker,下载地址:点击进入
下载完成后,直接双击安装即可,安装完成后,需要启动这个软件,然后在你的命令提示行窗口里面,会有 docker 命令,你可以查看版本
PS C:\Users\Administrator> docker --version
Docker version 20.10.14, build a224086
如果你运行 docker 命令后,像我上面的内容一样输出了版本号,说明你的 docker 可以正常工作
第二步,打开终端,下载 mysql 镜像
docker pull mysql:5.7
第三步,通过镜像启动 mysql
docker run --name some-mysql -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /root/data:/var/lib/mysql mysql:5.7
执行完上面命令后,会得到一个容器的 id,这个 id 下一条命令会用到,例如:eyJhbGc
{
现在解释一下命令参数:
1:--name some-mysql:该容器启动后的名字:(自定义命名)如果没有设置,系统会自动设置一个,毕竟如果开启太多的容器,记不住就很尴尬,建议加上见名知意。
2:-d 代表后台启动该服务
3:-p 3306(这是liunx的端口号,我习惯说成宿主机,如果我们想要远程服务的话,访问的端口就是这个端口):3306(docker容器的端口,每一个容器都是独立的,可理解成操作系统层面的系统),访问这个端口就是先通过远程访问宿主机的端口,再映射到docker容器的端口访问mysql。
4:-e MYSQL_ROOT_PASSWORD=123456 这是说mysql启动需要的开机密码,默认的账号是root ,密码就是上面设置的:123456
5:-v /root/data:/var/lib/mysql /root/data/:这是宿主机的数据存放路径(你也可以自定义), /var/lib/mysql:这是mysql容器存放数据的地方。也是为了同步数据,防止,容器被删除以后,数据就不存在了。
}
第四步,进入到容器
注意下面命令中的 容器 id, 这里的 id 是上面一步命令得到的启动的容器的 id, 举个例子:如果上一步,我得到的 docker 容器 id 是:eyJhbGc, 那么我要运行这个容器的命令就是 docker exec -it eyJhbGc /bin/bash
docker exec -it 容器id /bin/bash
第五步,进入到 mysql
mysql -uroot -p
输入密码:123456, 注意输入密码的时候密码是不可见的,输入后直接敲回车即可
- 如果需要修改
root
用户的密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
- 刷新权限:
FLUSH PRIVILEGES;
第六步,更改授权策略
GRANT ALL PRIVILEGES ON *.* TO "root"@"%" IDENTIFIED BY "root" WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO "root"@"127.0.0.1" IDENTIFIED BY "root" WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO "root"@"localhost" IDENTIFIED BY "root" WITH GRANT OPTION;
FLUSH PRIVILEGES
上面步骤执行后,密码改为 root,下次进入的时候使用新密码登录
注意:
1 每次你要保持docker软件处于启动状态
2 你要让你的docker容器处于启动状态, 打开你的docker软件,containers/Apps下面会有你创建好的容器,如果没有启动,你需要点击启动
一、Docker 之 Windows Hyper-V 导致的端口占用问题
为什么会出现保留端口? 为什么排除一个系统的保留端口执行的是 "netsh interface ipv4 add excludeportrange ..." 而不是 "netsh interface ipv4 delete excludeportrange ..."? "netsh interface ipv4 show excludedportrange protocol=tcp" 中的 "Administered port exclusions" 是啥意思?
netstat 查不到,启动程序却提示端口占用的解决办法:
# 显示动态端口范围
netsh int ipv4 show dynamicport tcp
# 显示例外端口范围
netsh interface ipv4 show excludedportrange protocol=tcp
# 如果提示被占用的端口在例外端口范围中,执行以下步骤
# 禁用Hyper-V [需要重启电脑]
dism.exe /Online /Disable-Feature:Microsoft-Hyper-V
# 添加例外端口 把这条命令的 1099 换成被占用的端口即可
netsh int ipv4 add excludedportrange protocol=tcp startport=1099 numberofports=1
# 启动Hyper-V [需要重启电脑]
dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All
以下是常用命令:
# 禁用Hyper-V
dism.exe /Online /Disable-Feature:Microsoft-Hyper-V
# 启动Hyper-V
dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All
# 显示动态端口范围
netsh int ipv4 show dynamicport tcp
# 显示例外端口范围
netsh interface ipv4 show excludedportrange protocol=tcp
# 设置动态端口TCP范围
netsh int ipv4 set dynamicport tcp start=1024 num=13977
# 设置动态端口UDP范围
netsh int ipv4 set dynamicport udp start=1024 num=13977
# 添加例外端口
netsh int ipv4 add excludedportrange protocol=tcp startport=1099 numberofports=1
列举几个端口如下:
22
80
8080
443
1099
3306
6379
5672
15672
25672
61616
61613
netsh int ipv4 add excludedportrange protocol=tcp startport=22 numberofports=1
netsh int ipv4 add excludedportrange protocol=tcp startport=80 numberofports=1
netsh int ipv4 add excludedportrange protocol=tcp startport=8000 numberofports=1000
netsh int ipv4 add excludedportrange protocol=tcp startport=443 numberofports=1
netsh int ipv4 add excludedportrange protocol=tcp startport=1099 numberofports=1
netsh int ipv4 add excludedportrange protocol=tcp startport=3306 numberofports=1
netsh int ipv4 add excludedportrange protocol=tcp startport=5672 numberofports=1
netsh int ipv4 add excludedportrange protocol=tcp startport=15672 numberofports=1
netsh int ipv4 add excludedportrange protocol=tcp startport=25672 numberofports=1
netsh int ipv4 add excludedportrange protocol=tcp startport=61613 numberofports=1
二、[Win11 没有 Hyper-V 解决方案]
史上最全Docker环境安装指南-让安装docker简单到爆
一、下载 Docker Desktop
下载地址:www.docker.com/get-started…
直接点左边 Docker Desktop 下载就行,大概400多MB
二、Win11 家庭版安装Hyper-V
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL
即在桌面新建一个 Hyper-V.cmd 文本
3.以管理员身份执行Hyper-V.cmd 文件。
此时小伙伴们就可以在 "启动或关闭 Windows 功能" 中看到 Hyper-V 啦~
三、Docker容器无法启动,图标变红
1、Docker容器无法启动,图标变红,报错 error invoking remote method 'docker-start-container': error: (http code 500) server error - ports are not available.
2、重启计算机,重启后在iterm2执行
docker ps -a
3、重启容器
docker restart 33e5ff5f1ec0
有不同的问题及解决方法, 欢迎各位同学评论!!!