2017-01-20 5 views
3

Я использую Docker для Windows v1.13.0 и docker-maven-plugin v0.4.13 на своей локальной машине Windows 10 Pro , Я использую для создания моего проекта и создания образа докера. Сборки не удается:Docker для Windows и docker-maven-plugin - сообщение «SSLException: непризнанное сообщение SSL, сообщение с открытым текстом»

[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 отлично работал с инструментальной панелью 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 для 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" 
     } 
    } 
} 

Ниже приводится докер-Maven-плагин конфигурации.

<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

Вы используете Windows 10 Pro? Не могли бы вы вставить свою конфигурацию docker-maven-plugin и% HOME% \. Docker \ config.json? У меня были некоторые проблемы при использовании его в Windows 10. –

+0

@ EricHans: да, это Win 10 Pro. Я добавил к этому вопросу конфигурацию плагина и содержимое config.json. –

+0

У вас есть облачный провайдер? Вы добавили сертификат сервера в докер или логин, игнорирующий tls? –

ответ

1

Там может быть какой-то элемент конфигурации под% HOME% .docker влияя на связь с DOCKER-Maven-плагин. Попытайтесь удалить папку% HOME% .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": {} 
    } 
} 

При повторном запуске докер вход, он будет генерировать маркер снова, и вы не должны иметь никаких проблем аутентификации.

После входа в систему, ваш% HOME% .docker \ config.json будет выглядеть следующим образом:

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

По крайней мере, он работал на меня.

+0

Удаление% USER% \. Docker решило проблему, и я смог создать изображение с помощью docker-maven-plugin. Когда я добавил '-DpushImageTag', действительно я увидел ошибку:« Исключено исключение: неавторизованный: требуется проверка подлинности ». Я удалил элемент «credsStore» и после команды 'docker login' значение« auth »было автоматически заполнено, а затем' -DpushImageTag' работал. –