Docker安装及问题异常总结(一)

1,008 阅读6分钟

最近因为破电脑不知道啥情况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 啦~

wps2.jpg

三、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

ebd7acabb6e1440c88e104b29ced916c.png

3、重启容器

 docker restart 33e5ff5f1ec0

有不同的问题及解决方法, 欢迎各位同学评论!!!