Docker для Windows и docker-maven-plugin - ошибка "SSLException: нераспознанное SSL-сообщение, незашифрованное соединение"
Я использую Docker для Windows v1.13.0 и docker-maven-plugin v0.4.13 на моей локальной машине с Windows 10 Pro. я использую mvn clean package docker:build
построить свой проект и создать образ докера. Сборка не удалась:
[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 build -t ...
) работает отлично. Плагин maven прекрасно работал с панелью инструментов Docker и Oracle Virtual Box на Windows 7.
Поэтому я полагаю, что существует проблема конфигурации, связанная с TLS, между docker-maven-plugin и демоном Docker для Windows. Я пробовал разные комбинации конфигурации, используя DOCKER_HOST
(без указания порта, 2375, 2376), DOCKER_TLS_VERIFY
, а также DOCKER_TLS
но безрезультатно. Также попробовал "tls"
а также "tlsverify"
атрибуты "расширенной" конфигурации Docker для Windows.
Кто-нибудь смог заставить docker-maven-plugin создать образ Docker на Docker для Windows?
Мой файл%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>
1 ответ
В%HOME%.docker может быть какой-то элемент конфигурации, влияющий на связь с docker-maven-plugin. Попробуйте удалить папку%HOME%.docker и перезапустить Docker. После этого запустите
oc login -u пользователь https://url-to-openshift:port --insecure-skip-tls-verify
а также
вход в докер -u пользователь -p токен URL-адрес-частный-реестр
а затем откройте%HOME%.docker, и если ваш файл выглядит так:
{
"auths": {
"url-to-private-registry": {}
},
"credsStore": "wincred"
}
затем удалите часть credsStore, потому что плагин spotify docker-maven-plugin не поддерживает его.
Пример:
{
"auths": {
"url-to-private-registry": {}
}
}
Когда вы снова запустите вход в Docker, он снова сгенерирует токен, и у вас не должно возникнуть проблем с аутентификацией.
После входа ваш%HOME%.docker\config.json будет выглядеть так:
{
"auths": {
"url-to-private-registry": {
"auth:" "token-that-docker-maven-plugin-needs-when-property-useConfigFile-is-true"
}
}
}
По крайней мере, у меня это сработало.