关于dockerfile基于基础镜像来构建镜像遇到的问题!

今天在学习基于docker构建镜像的时候遇到一个问题
一下是我的dockerfile

# 指定基础镜像
FROM java:8

COPY ./zhiwei.jar /opt/zhiweiapp.jar

# 暴露端口
EXPOSE 8000
# 入口,java项目的启动命令
ENTRYPOINT java -jar /opt/zhiweiapp.jar

img


这是我的报错信息,我觉得大概就是我基于的基本镜像有问题,于是我在网上搜索了一下,尝试了java:8-alpine,openjdk:8-alpine,以及
java:jdk:8-alpine,但是都不行,报错也一样

  • 关于该问题,我找了一篇非常好的博客,你可以看看是否有帮助,链接:【无标题】docker安装java项目全套组件
  • 除此之外, 这篇博客: [附软]初识docker_docker基本操作_dockerfile自定义镜像_docker镜像仓库中的 3.3.2.基于java8构建Java项目 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 虽然我们可以基于Ubuntu基础镜像,添加任意自己需要的安装包,构建镜像,但是却比较麻烦。所以大多数情况下,我们都可以在一些安装了部分软件的基础镜像上做改造。

    例如,构建java项目的镜像,可以在已经准备了JDK的基础镜像基础上构建。

    需求:基于java:8-alpine镜像,将一个Java项目构建为镜像

    实现思路如下:

    • ① 新建一个空的目录 java8-demo,然后在目录中新建一个文件,命名为Dockerfile

    • ② 拷贝课前资料提供的docker-demo.jar到这个目录java8-demo中

    • ③ 创建一个txt: 命名为:dockerfile 不用后缀

      • a )基于java:8-alpine作为基础镜像

      • b )将docker-demo.jar拷贝到文件中

      • c )暴露端口

      • d )编写入口ENTRYPOINT

        内容如下:

        FROM java:8-alpine
        COPY ./docker-demo.jar /tmp/app.jar
        EXPOSE 8090
        ENTRYPOINT java -jar /tmp/app.jar
        
    • ④ 使用docker build命令构建镜像

      docker build -t javaweb:2.0 .
      
    • ⑤ 使用docker run创建容器并运行

      docker run --name javaweb2.0 -p 8090:8090 -d javaweb:2.0
      
    • ⑥开始采坑 端口会占用, 之前启动了一个了, 现在要学会怎么处理

      • image-20220117222746546

      • 查看已经启动的容器 docker ps docker ps -a查看所有端口

        image-20220117223007066

        停掉这个容器 docker stop b10a9f62c351 会有点小久… 正常现象

        image-20220117223129978

        如果出现名字被占用了 可以删除这个容器 docker rm id号

        image-20220117223430208

        在查看所有启动中的容器 docker ps

        然后在查看所有容器, 看看有没有同名的. 或者占用这个端口的, docker ps -a

        检查通过的话, 就重新启动

        image-20220117224227112

  • 您还可以看一下 刘磊老师的Docker入门与进阶实战(基于Java,通俗易懂,附源码)课程中的 编写Dockerfile文件示例小节, 巩固相关知识点

是否网络有问题?

docker 仓库镜像地址配置的什么

换成openjdk