整理windows10下 部署 docker的流程及 mysql、cpp_httpserver容器的部署测试流程

一、部署测试流程

1、打开控制面板 ->程序->启用关闭Windows功能-> 选择Hyper-V、Hyper-V 管理工具、Hyper-V平台->确定


2、重启windows10系统


3、安装Docker Desktop Installer.exe软件

链接:百度网盘链接
提取码:8dzw 
 


4、WSL提示到指定链接更新linux内核,直接安装wsl_update_x64.msi文件,然后点击Restart,重启linux内核,稍等会

链接:百度网盘链接
提取码:0wiv 
 


5、打开cmd,测试输入docker --version,返回docker版本号,测试正常


6、需要输入一个指令 DockerCli.exe -SwitchDaemon  ????需要输入吗?貌似不用输也可以,有时间专门找个window10系统进行测试


7、打开cmd,测试输入docker login -u xujianjun229,输入密码后,是否可以 正常登录DockerHub


8、然后输入docker pull mysql,下载5.7版本的mysql


9、然后输入docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7,或者输入下面的语句也可以:

//指定uname后,下次启动容器可以使用docker start 容器名称  来启动 ,参数和run时的参数也是一致的
docker run -d -it -p 3306:3306 --name xujianjun229_mysql1 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7


10、然后在windows10的宿主机上,安装navicat,ip输入localhost, 再输入用户名和密码  即可正常登录mysql服务器

11、启动cpp_httpserver

//启动cpp_httpserver(最好是先启动容器,然后进入容器再启动http服务程序,否则无法写日志)
docker run -d -it -v /etc/localtime:/etc/localtime -v /etc/timezone:/etc/timezone --name xujianjun229_centos_cpp_httpserver1 -p 8000:9000 xujianjun229/centos_cpp_httpserver:1.3 /home/ehttp/output/test/./hello_server 9000

12、docker ps -a 查看所有运行过的容器记录   docker ps 查看当前正在运行的容器

二、在部署期间所碰到的问题如下:

1、当通过windows10的 cmd输入 docker命令的时候,报如下错误:error during connect: This error may indicate that the docker daemon is not running.: Get "http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/containers/json": open //./pipe/docker_engine: The system cannot find the file specified.

 解决方案:启动Docker Desktop守护进程程序即可

2、当通过windows主机连接虚拟的mysql8之后版本的数据库时报如下错误:Client does not support authentication protocol requested by server; consider upgrading MySQL client

注意:mysql5.7的没有此错误

2.1、原因查找
通过查看网上别人遇到的相关问题,发现是由于navicat版本的问题,出现连接失败的原因:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password。并提供了两种解决方案

(1).升级navicat,由于navicat是收费的,个人感觉升级会比较麻烦点。

(2).把用户密码登录的加密规则还原成mysql_native_password这种加密方式,本人选择第二种解决方案

2.2、问题解决
按照步骤

docker exec -it mysql bash 进入登录mysql

1.通过mysql -u root -p"123456" 进入mysql的命令行模式


 

2.输入命令修改相关机密方法

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;这里的password是你正在使用的密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';#更新一下用户的密码这里的password为你修改的新密码。

FLUSH PRIVILEGES; #刷新权限,使自己的修改生效。

这时还是连接不上,然后通过telnet3306数据库对应的接口,出现了8.0.11;S"3<VN,.Y\k4Ycaching_sha2_password这个信息,是修改没有生效还是其他原因?重启容器之后还是不行。

然后use mysql;


查询表中的相关信息 select user,host,plugin from user where user='root';

这时发现了问题,原理刚刚修改的是localhost对于非本机的连接密码校验规则还是没有变

 alter user 'root'@'%' identified by 'password' password expire never;

 alter user 'root'@'%' identified with mysql_native_password by 'why';//why是自己新修改的密码。root是用户,这个是修改密码的操作

 flush privileges;再次刷新一下权限配置。

为了确定下,重新查一下,select user,host,plugin from user where user='root';


修改好了,再用宿主的window电脑上的navicat访问数据库。

参考连接:navicat 连接不上虚拟机上的mysql容器 client does not support authentication protocol requested by server; consid_yubin1285570923的博客-CSDN博客_navicat连接不上虚拟机上的mysql

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值