gpt4 book ai didi

适用于 Windows 的 Docker 和 docker-maven-plugin - "SSLException: Unrecognized SSL message, plaintext connection"错误

转载 作者:行者123 更新时间:2023-12-02 06:38:00 26 4
gpt4 key购买 nike

我在本地 Windows 10 Pro 计算机上使用 Docker Desktop for Windows v1.13.0 和 docker-maven-plugin v0.4.13。我正在使用 mvn clean package docker:build 来构建我的项目并生成 docker 镜像。构建失败:

[INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 25.006 s [INFO] Finished at: 2017-01-19T14:48:45-02:00 [INFO] Final Memory: 68M/619M [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal com.spotify:docker-maven-plugin:0.4.13:build (default-cli) on project monitoramentoRS: Exception caught: java.util.concurrent.ExecutionException: com.spotify.docker.client.shaded.javax.ws.rs.ProcessingException: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? -> [Help 1]

直接在命令行上创建 docker 镜像(docker build -t ...)效果很好。 maven 插件在 Windows 7 上与 Docker 工具箱和 Oracle Virtual Box 配合得很好。

因此,我认为 docker-maven-plugin 和 Docker for Windows 守护进程之间存在与 TLS 相关的配置问题。我已尝试使用 DOCKER_HOST(无端口指示,2375、2376)、DOCKER_TLS_VERIFYDOCKER_TLS 进行不同的配置组合,但均无济于事。还尝试了“高级”Docker for Windows 守护进程配置的 "tls""tlsverify" 属性。

有人能够让 docker-maven-plugin 在 Docker for Windows 上创建 docker 镜像吗?

我的 %HOME%\.docker\config.json 文件仅包含 auths 集合:

{
"auths": {
"our-corporate-private-docker-registry-address": {
"auth": "an-authorization-token"
},
"https://index.docker.io/v1/": {
"auth": "an-authorization-token"
}
}
}

下面是 docker-maven-plugin 配置。

<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<useConfigFile>false</useConfigFile> <!-- true yields the same error -->
<registryUrl>${docker.private.registry}</registryUrl>
<imageName>${docker.private.registry}/myrepo/myimage</imageName>
<imageTags>
<imageTag>latest</imageTag>
</imageTags>
<dockerDirectory>${basedir}/docker</dockerDirectory> <!-- Dockerfile location -->
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory> <include>${project.build.finalName}.${project.packaging}</include>
</resource>
</resources>
</configuration>
</plugin>

最佳答案

%HOME%.docker 下可能有一些配置元素影响与 docker-maven-plugin 的通信。尝试删除 %HOME%.docker 文件夹并重新启动 docker。之后,运行

oc login -u user https://url-to-openshift:port --insecure-skip-tls-verify

docker login -u user -p token url-to-private-registry

然后打开%HOME%.docker,如果你的文件是这样的:

{
"auths": {
"url-to-private-registry": {}
},

"credsStore": "wincred"
}

然后删除credsStore部分,因为spotify docker-maven-plugin不支持它。

示例:

{
"auths": {
"url-to-private-registry": {}
}
}

当您再次运行 docker login 时,它将再次生成 token ,您应该不会遇到任何身份验证问题。

登录后,您的 %HOME%.docker\config.json 将如下所示:

{
"auths": {
"url-to-private-registry": {
"auth:" "token-that-docker-maven-plugin-needs-when-property-useConfigFile-is-true"
}
}
}

至少,它对我有用。

关于适用于 Windows 的 Docker 和 docker-maven-plugin - "SSLException: Unrecognized SSL message, plaintext connection"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41767686/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com