使用spring-boot-maven-plugin构建的Docker镜像无法启动如何解决?
错误原因
你在spring-boot-maven-plugin中配置的镜像名称为docker.io/jeremy/${project.artifactId}:v1,使用mvn spring-boot:build-image命令构建完成后,镜像仅存储在你本地的Docker环境中,并没有推送至Docker Hub的jeremy公共命名空间下。你执行docker run命令时使用了jeremy/demo:v1的短名称,Docker会默认优先从Docker Hub远程仓库拉取该镜像,由于你未登录对应Docker Hub账号、且该公共仓库下不存在对应镜像,就会触发访问权限拒绝的报错。
解决方法
你可以选择以下任意一种方案解决:
- 方案1:运行时使用完整镜像名或本地镜像ID
首先执行docker images命令查看本地镜像列表,找到你刚构建的镜像记录,直接使用完整镜像名启动即可:
你也可以替换为该镜像对应的ID进行启动:docker run -p 8080:8080 docker.io/jeremy/demo:v1# 替换xxxx为你实际查到的镜像ID前缀 docker run -p 8080:8080 xxxx - 方案2:修改插件配置,使用本地镜像命名规则
调整pom.xml中插件的镜像名称配置,去掉远端仓库前缀,构建出来的镜像默认识别为本地镜像:
重新执行<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <image> <name>${project.artifactId}:v1</name> </image> </configuration> </plugin> </plugins> </build>mvn spring-boot:build-image完成构建后,直接使用短名称启动即可:docker run -p 8080:8080 demo:v1
内容的提问来源于stack exchange,提问作者jndp
相关产品推荐
相关产品推荐

