我正在尝试使用Google JIB maven插件构建我的docker映像并将其部署到私有注册表。但是,它因访问私有注册表而失败。
我已在我的Windows 10机器上安装了Docker Desktop v19.03.1。接下来,我正在尝试使用Google JIB Maven插件构建我的Spring Boot应用程序,然后推送构建在私有注册表上的映像。
我已将证书添加到“示例”。注册处。com'到Windows受信任的证书。我可以使用docker命令登录到private registry进行验证,如下所示:-
docker登录示例。注册处。通用域名格式
此命令返回身份验证成功,这意味着我添加的证书已被接受。
登录到私有注册表后,我可以使用docker命令行将图像拉入并推送到“示例”。注册处。com’成功。
下面是我的POM。xml文件。
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>1.5.1</version>
<configuration>
<to>
<image>example.registry.com/inventory-service-docker:1.0</image>
<auth>
<username>plaintextusernameforRegistry</username>
<password>plaintestpasswordforRegistry</password>
</auth>
</to>
<from>
<image>openjdk:8</image>
</from>
<container>
<ports>
<port>8089</port>
</ports>
</container>
<allowInsecureRegistries>true</allowInsecureRegistries> <!-- this is commented on the first run.-->
</configuration>
</plugin>
当我使用pom目录从控制台运行“mvn compile jib:build”命令时。xml文件,它确实会启动处理,但在稍后阶段失败,错误如下:-
[错误]无法执行目标com.google.云工具:jib maven插件:1.5.1:project inventory service docker上的build(默认cli):build image失败,也许您应该使用支持HTTPS的注册表或设置配置参数“allowInsecureRegistries”:在https://example.registry.com/v2/inventory-service-docker/blobs/sha256:9cc2ad81d40d54dcae7fa5e8e17d9c34e8bba3b7c2cc7e26fb22734608bda32e因为只允许安全连接。
当我按照上面的错误建议设置配置参数“allowInsecureRegistries”后运行相同的命令时,我得到了一个不同的错误,如下所示:-
[错误]无法执行目标com.google.云工具:jib maven插件:1.5.1:project inventory service上的build(默认cli)docker:build image失败:无法使用注册表示例进行身份验证。注册处。com/库存服务docker因为:sun。安全验证器。ValidatorException:PKIX路径生成失败:sun。安全供应商。certpath。SunCertPathBuilderException:找不到请求目标的有效证书路径
(在开始之前,请不要使用Jib 1.5. x,因为这些版本存在网络性能问题。)
JVM不使用Windows证书存储
JRE的一个大问题是它完全忽略了Windows证书存储。它不使用windows证书存储,而是使用自己的实现
我在另一个答案中发现,Windows的一个潜在选项是使用-Djavax启动Java。网ssl。trustStoreType=WINDOWS-ROOT
。但我还没有证实这是否有效。
另一种方法是将证书添加到默认的Java证书存储(truststore)文件(cacerts
)。它通常位于
有多种方法可以添加证书(例如,使用各种GUI工具)。例如,
在命令行上
keytool.exe -import -storepass "changeit" -keystore "C:\Program Files (x86)\Java\jre1.8.0_144\lib\security\cacerts" -alias certificate.cer -file "C:\certificate.cer" -noprompt
使用名为KeyStore Explorer的GUI工具
最后,对于那些想要获得更多解决此类Java证书问题的想法的人,请查看此评论。
我无法将docker映像推送到低于错误的工件注册表 登录和拉取工作正常 詹金斯档案: Dockerfile: 我不确定这是怎么回事。我可以在jenkins从属节点上手动推送图像。但使用詹金斯会产生错误 我构建工作的日志 这是我的构建日志中的内容。
我无法将docker映像推送到heroku注册表。 根据docker的说法,我已成功登录: 在那之后,我运行了,我得到了一些令人困惑的错误,说我试图推送到一个不安全的repo,而de-output中的url看起来是安全的(以https开头)。我做错了什么? 我正在使用以下jib配置: jib的Maven输出:build wiht-X:
试图将Gradle项目推送到Github包注册表,但未按预期工作。 使用Gradle插件。 在带有需要发布的数据-代码如下。并运行发布任务。没有收到错误,但在GitHub包注册表中看不到我的包。 期待一些例子,如何发布到Github包注册表与Gradle或我在发布时做错了什么
我有一个小问题与我的docker注册表上openshift源安装。 我创建了一个docker注册表pod: 创建了一条路线: 创建了一个服务: Openshift的Master是在10.0.2.235上的,只有一个节点,现在我已经创建了一个spring boot应用程序,我使用maven插件docker来构建和推送映像。 当我在本地(主计算机上)运行maven push时,工作正常,但如果我在另一
我试图使用fabric8 docker client for Java将一个docker图像推送到dockerhub。
我正在使用fabric8 maven插件在Google云平台上运行的Jenkins上构建Docker映像。 该插件提供了将图像推送到Docker注册表的功能,但我无法使其与Google容器注册表一起工作,因为它无法进行身份验证。 从我的Jenkins管道中,我可以使用和访问注册表。 对于访问Docker注册中心,Fable8 Maven插件可以与凭据或扩展身份验证一起使用,但这似乎仅适用于AWS。