docker mysql8.0镜像出现的问题以及解决方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker mysql8.0镜像出现的问题以及解决方法相关的知识,希望对你有一定的参考价值。
参考技术A 本次安装,没有选择现成的镜像,从docker的github上,把dockerfile搞到本地,然后build镜像。如果不出意外的话,步骤很简单。dockerfile文件在此: https://github.com/docker-library/mysql/blob/master/8.0/Dockerfile.debian
把dockerfile:Dockerfile.debian复制也好,wget也好,搞到本地,然后执行:
经过漫长的等待,期待,docker给我报了个错误。截图如下:
可见,报错内容为:目录不存在,不过/var/lib/docker/tmp/docker-builderxxxxx这个目录,是build在运行时的临时目录,build完成后,就会被删掉。所以,在build的时候,这里有没有docker-builderxxxxx这个目录,目录下有没有config,我也不知道。
但是问题还是要解决的,看一下dockerfile的内容
这样,把dockerfile里需要的内容,都手动的放到当前目录里,在此build。就可以通过了。
为什么直接执行build,会提示在tmp目录下找config呢?我觉得是build的时候,tmp目录下的docker-builderxxxxx目录会映射到当前目录。报的这个错误其实就是从当前目录找config文件,当前目录没有,就去映射的docker-builderxxxxx目录下找,而docker-builderxxxxx目录下因为我不知道的原因也没有,所以就报错了。只需要确保当前目录下有dockerfile里需要的文件就可以解决了。
Windows10环境下制作SpringBoot项目的Docker镜像以及与宿主机上MySQLRedis进行桥接通信
Windows10环境下Docker镜像制作以及与宿主机上MySQL、Redis进行桥接通信
软件版本
- OS: Windows10
- IDEA: 2020.3
- JDK: 8
- MySQL: 5.7
- WSL:Linux version 5.10.16.3-microsoft-standard-WSL2 (oe-user@oe-host) (x86_64-msft-linux-gcc (GCC) 9.3.0, GNU ld (GNU Binutils) 2.34.0.20200220) #1 SMP Fri Apr 2 22:23:49 UTC 2021
- Docker Server:
一、IDEA配置Docker
1,暴露Docker后台
在Docker Desktop
的设置中勾选下图红色长框中的选项。
2,IDEA中配置连接Docker后台
将上图中的URL填写到下图箭头所指处。
3,编写Dockerfile文件
在项目中src/main
创建docker文件夹,在该文件夹下创建Dockerfile文件。内容为:
FROM java:8
MAINTAINER Chambocang
WORKDIR /
ADD iotProject.jar iotProject.jar
RUN bash -c 'touch /iotProject.jar'
EXPOSE 8081
ENTRYPOINT ["java","-Dfile.encoding=UTF-8","-jar","/iotProject.jar"]
4,项目镜像和容器参数配置
右键点击Dockerfile文件中Run on Docker
按钮,再点击编辑文件菜单选项。依次填写好下图中的序号标出的参数。
5,启动容器
项目中包含数据库和Redis的使用,其驱动配置中包含的IP都是127.0.0.1
,该IP此时表示容器
的环回地址,和宿主机上的监听127.0.0.1
的MySQL、Redis两码事。因此容器需要访问宿主机上的MySQL、Redis,必须知道能够和宿主机的127.0.0.1
通信的IP地址,因此就涉及Docker网络的知识。
二、开通宿主机上MySQL、Redis的IP访问权限
具体知识自行搜索官方WSL2网络相关讲解,该博客给出答案。
1,查询docker0网卡信息
2,项目配置文件替换
将host和URL都改为上述IP地址。
3,修改MySQL IP访问权限
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql>flush privileges;
语句含义如下。
// 其中各字符的含义:
// *.* 对任意数据库任意表有效
// "root" "123456" 是数据库用户名和密码
// '%' 允许访问数据库的IP地址,%意思是任意IP,也可以指定IP
// flush privileges 刷新权限信息
4,修改Redis IP访问权限
添加上述IP地址到bind
行。
三、实战结果
在浏览器中输入docker0的IP地址以及访问接口,得到如下图之结果。
以上是关于docker mysql8.0镜像出现的问题以及解决方法的主要内容,如果未能解决你的问题,请参考以下文章