使用mvn spring-boot:build-image构建镜像成功但Docker中无法找到求助
Maven构建Spring Boot Docker镜像成功但无法找到的解决方法
问题描述
执行mvn spring-boot:build-image命令构建Docker镜像,日志明确显示构建成功:
╰─⠠⠵ mvn spring-boot:build-image ... O] [creator] Saving docker.io/library/spring-service:0.0.16-SNAPSHOT... [INFO] [creator] *** Images (f28300653802): [INFO] [creator] docker.io/library/spring-service:0.0.16-SNAPSHOT [INFO] [creator] Reusing cache layer 'paketo-buildpacks/syft:syft' [INFO] [creator] Reusing cache layer 'cache.sbom' [INFO] [INFO] Successfully built image 'docker.io/library/spring-service:0.0.16-SNAPSHOT' [INFO] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 28.784 s [INFO] Finished at: 2022-09-01T18:19:01+04:30 [INFO] ------------------------------------------------------------------------
但执行docker image ls却看不到docker.io/library/spring-service:0.0.16-SNAPSHOT镜像,当前镜像列表如下:
╰─⠠⠵ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE mariadb <none> 01d138caf7d0 8 days ago 384MB grafana/grafana latest b6ea013786be 9 days ago 299MB redis <none> dc7b40a0b05d 9 days ago 117MB bitnami/zookeeper latest dd7f87e04f7b 10 days ago 521MB bitnami/kafka latest c01437a78c04 12 days ago 664MB prom/prometheus latest d3167094f2ef 2 weeks ago 215MB mariadb latest 40b966d7252f 4 weeks ago 383MB redis latest 3e42dd4e79c7 4 weeks ago 117MB emqx/emqx latest 42418de7f6c3 4 weeks ago 148MB portainer/portainer-ce 2.11.1 ed396c816a75 6 months ago 280MB
排查与解决步骤
1. 直接通过镜像ID验证存在性
日志中已给出镜像ID f28300653802,执行命令确认镜像是否实际存在:
docker image inspect f28300653802
如果返回镜像详细信息,说明镜像已创建,只是docker image ls的输出未正常显示标签。
2. 检查容器工具兼容性
Spring Boot的build-image基于Paketo Buildpacks,可能镜像被存储到了其他兼容容器工具(如podman)而非Docker。执行以下命令切换工具检查:
podman image ls
同时确认当前docker命令是否指向Docker守护进程:
docker info
若输出异常,排查是否有其他容器工具在运行。
3. 手动重新打标签
如果镜像存在但标签异常,手动为镜像添加目标标签:
docker tag f28300653802 docker.io/library/spring-service:0.0.16-SNAPSHOT
执行后再用docker image ls查看是否显示目标镜像。
4. 检查Maven插件配置
查看项目pom.xml中的spring-boot-maven-plugin配置,确认是否指定了私有镜像仓库:
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <image> <registry>my-local-registry:5000</registry> </image> </configuration> </plugin>
若配置了私有仓库,需到对应仓库查看镜像是否被推送过去。
5. 清理缓存后重新构建
缓存异常可能导致标签丢失,清理Maven和Docker缓存后重新构建:
mvn clean spring-boot:build-image -DskipTests docker system prune -a
重新构建完成后再次检查镜像列表。
内容的提问来源于stack exchange,提问作者Iman Ahrari
相关产品推荐
相关产品推荐

