【问题标题】:Docker for Windows and docker-maven-plugin - "SSLException: Unrecognized SSL message, plaintext connection" errorDocker for Windows 和 docker-maven-plugin - “SSLException: Unrecognized SSL message, plaintext connection” 错误
【发布时间】:2017-06-05 16:20:06
【问题描述】:

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

[信息] -------------------------------------------------- ---------------------- [信息] 构建失败 [信息] -------------------------------------------------- ---------------------- [INFO] 总时间:25.006 s [INFO] 完成时间: 2017-01-19T14:48:45-02:00 [INFO] 最终内存:68M/619M [INFO] -------------------------------------------------- ---------------------- [错误] 未能执行目标 com.spotify:docker-maven-plugin:0.4.13:build (default-cli) 在项目上 monitoramentoRS:捕获到异常: java.util.concurrent.ExecutionException: com.spotify.docker.client.shaded.javax.ws.rs.ProcessingException: javax.net.ssl.SSLException:无法识别的 SSL 消息,纯文本 联系? -> [帮助 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>

【问题讨论】:

  • 您使用的是 Windows 10 专业版吗?你能粘贴你的 docker-maven-plugin 配置和 %HOME%\.docker\config.json 吗?我在 Windows 10 中使用它时也遇到了一些问题。
  • @EricHans:是的,它是 Win 10 Pro。我在问题中添加了插件配置和 config.json 内容。
  • 你有什么云提供商?您是否将服务器证书添加到 docker 或登录忽略 tls?
  • 云提供商是 OpenShift (oc v1.3.0 kubernetes v1.3.0+52492b4)。我没有添加服务器证书,但我的 docker 守护进程配置在“insecure-registries”集合中列出了我的 OpenShift 私有 docker 注册表。

标签: docker docker-for-windows docker-desktop docker-maven-plugin


【解决方案1】:

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

oc login -u 用户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 时,它会再次生成令牌,你不应该有任何身份验证问题。

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

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

至少,它对我有用。

【讨论】:

  • 删除 %USER%\.docker 解决了这个问题,我能够使用 docker-maven-plugin 构建图像。当我添加-DpushImageTag 时,我确实看到了一个错误:“异常捕获:未经授权:需要身份验证”。我删除了“credsStore”元素,在docker login 命令之后,“auth”值被自动填充,然后-DpushImageTag 正在工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-06
  • 2019-07-22
  • 2017-05-03
  • 2019-07-02
  • 2016-11-22
相关资源
最近更新 更多