前言
Docker是什么?对于我这个初学者来说,我暂时把它认为是一个能把开发的程序和它的运行环境打包在一起,然后自动部署在一个容器中,不做任何配置,依然能够正常运行。
摘自其他地方的Docker 定义:
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
常见操作命令
命令 | 说明 |
---|---|
docker pull | 拉取镜像 |
docker push | 推送镜像到DockerRegistry |
docker images | 查看本地镜像 |
docker rmi | 删除本地镜像 |
docker run | 创建并运行容器(不能重复创建) |
docker stop | 停止指定容器 |
docker start | 启动指定容器 |
docker restart | 重新启动容器 |
docker rm | 删除指定容器 |
docker ps | 查看容器 |
docker logs | 查看容器运行日志 |
docker exec | 进入容器 |
docker save | 保存镜像到本地压缩文件 |
docker load | 加载本地压缩文件到镜像 |
docker inspect | 查看容器详细信息 |
Navicat连接Docker容器内MySQL出现的问题
1251 - Client does not support authentication protocol requested by server; consider upgrading MySQL client
通过上网查找,发现是我的Navicat的版本太老的问题,而我的是MySQL8,错误原因:
- MySQL8之前的版本中加密规则是
mysql_native_password
,而在MySQL8之后,加密规则是caching_sha2_password
。
所以解决办法有两个:
- 升级Navicat版本
- 修改加密规则
我选择了还原加密规则的方法:
- 首先进入Docker中的mysql
- 输入以下代码(
password
填自己密码)
#设置密码永不过期
alter user 'root'@'%' identified by 'password' password expire never;
#修改验证方法
alter user 'root'@'%' identified with mysql_native_password by 'password';
#刷新权限配置。
flush privileges;
然后Navicat连接Docker中的MySQL容器成功
尾言
个人学习笔记,持续更新,有问题处请帮我指出。