构建OSM转MATSim的Docker镜像时遇java:8镜像找不到错误求助
问题:构建OSM转MATSim Docker镜像时镜像拉取失败
错误信息
[+] Building 3.2s (4/4) FINISHED => [internal] load build definition from Dockerfile 0.1s => => transferring dockerfile: 263B 0.0s => [internal] load .dockerignore 0.1s => => transferring context: 2B 0.0s => ERROR [internal] load metadata for docker.io/library/java:8 2.9s => [auth] library/java:pull token for registry-1.docker.io 0.0s ------ > [internal] load metadata for docker.io/library/java:8: ------ failed to solve with frontend dockerfile.v0: failed to create LLB definition: docker.io/library/java:8: not found
原Dockerfile内容
FROM java:8 RUN mkdir /osm2matsim WORKDIR /osm2matsim COPY . . RUN javac -cp vendor/matsim-0.9.0/matsim-0.9.0.jar Osm2matsim.java ENTRYPOINT ["java", "-cp", "vendor/matsim-0.9.0/matsim-0.9.0.jar:.", "Osm2matsim"]
解决方案
替换废弃的基础镜像:
java:8是Docker Hub上旧的官方Java镜像,现已被移除归档,无法拉取。改用官方维护的OpenJDK镜像,推荐两个选项:openjdk:8-jdk-alpine:轻量Alpine版本,镜像体积小,适合生产环境eclipse-temurin:8-jdk:Adoptium维护的标准JDK,兼容性更强
修改后的Dockerfile示例(以
openjdk:8-jdk-alpine为例):
FROM openjdk:8-jdk-alpine RUN mkdir /osm2matsim WORKDIR /osm2matsim COPY . . RUN javac -cp vendor/matsim-0.9.0/matsim-0.9.0.jar Osm2matsim.java ENTRYPOINT ["java", "-cp", "vendor/matsim-0.9.0/matsim-0.9.0.jar:.", "Osm2matsim"]
- 重新构建镜像:执行修正后的构建命令(原命令末尾多了一个冗余的
.,已去掉):
docker build . -t osm-to-matsim
内容的提问来源于stack exchange,提问作者Nimashi Uthpala
相关产品推荐
相关产品推荐

