目录
学习通道:狂神说Java】Docker最新超详细版教程通俗易懂
docker官网:Docker Documentation | Docker Documentation
docker hun:Docker Hub
SpringBoot微服务打包Docker镜像
1、 新建SpringBoot项目
打开Intellij IDEA,新建Spring项目
# 在测试的时候遇到的问题:
1、jdk版本太高,我一开始使用的jdk17,IDEA是2020.1版本,不适应jdk17,没办法只好重新下载了一个jdk8
2、初始的仓库下载太慢,于是配置了阿里远程仓库
# 打开浏览器输入localhost:8080查看结果:
2、打包应用
3、编写DockerFile
# 1、打开文件设置
# 2、点击插件,搜索docker插件然后下载,我的已经默认下载绑定了。
# 3、新建docker文件并编写
FROM java:8 COPY *.jar /app.jar CMD ["--server.port=8080"] EXPOSE 8080 ENTRYPOINT ["java","-jar","/app.jar"]
4、构建镜像
# 1、将已经生成的jar包和编写好的Dockerfile文件上传到虚拟机或服务器上(八仙过海各显神通咯)
# 2、执行build命令,构建镜像
docker build -t ajj666 .
5、发布运行
# 执行run命令,运行镜像
docker run -d -P --name ajj-springboot-web ajj666
# 查看镜像开放端口
root@ajj666-virtual-machine:/home/ajj666/idea# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 82d3b46e35f5 ajj666 "java -jar /app.jar …" 11 seconds ago Up 7 seconds 0.0.0.0:49156->8080/tcp, :::49156->8080/tcp ajj-springboot-web
# 打开浏览器,登陆镜像网络
# 大功告成!
# 所以在我们使用了docker之后,给客户交付的就是一个镜像即可!到这里我们就已经基本掌握了docker的基础内容!
6、jetson nano Build构建和容器运行问题
1、WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
# 尝试:
docker buildx build --platform=linux/arm -t springboot-web .
# 镜像生成成功,运行镜像容器:
docker run -d -P --name web01 springboot-web
# 运行成功,查看镜像:
docker ps
发现容器并没有运行!
# 尝试直接运行镜像容器:
docker run it springboot-web
# 报错:
standard_init_linux.go:228: exec user process caused: exec format error
2、standard_init_linux.go:228: exec user process caused: exec format error
# 原因:在nano上build构建java8所形成的容器在运行时会报这个错误,查询了半天后终于找到了解决办法,原来是java8服务不适用jetson nano!
# 解决办法:将Dockerfile中的java8 替换成openjdk:11.0.10-jdk-oraclelinux7,然后重新构建镜像
# 运行容器
# 搞定!