2017-04-01 125 views
2

我嘗試學習如何配置Jenkins(在Docker容器中)以基於Dockerfile構建Docker鏡像。在Jenkins中構建Docker鏡像(在Docker鏡像中) - Cloud Docker代理

起初我安裝了DockerToolbox。 (操作系統的Windows 7家庭)

然後我從Dockerhub拉最新的Jenkins圖像,運行容器並以管理員身份登錄。

基於本教程:https://www.katacoda.com/courses/jenkins/build-docker-images我嘗試配置插件以與Docker主機/守護程序進行通信。 (步驟3)

在(詹金斯/配置/雲部分)我必須填寫名稱和Docker-Url然後測試連接。

在Docker終端中,我輸入docker-machine config來獲得Url。

不幸的是測試連接後,我得到以下異常:

shaded.org.apache.http.client.ClientProtocolException 
javax.ws.rs.ProcessingException: shaded.org.apache.http.client.ClientProtocolException 
    at org.glassfish.jersey.apache.connector.ApacheConnector.apply(ApacheConnector.java:481) 
    at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:252) 
    at org.glassfish.jersey.client.JerseyInvocation$2.call(JerseyInvocation.java:701) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:228) 
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:444) 
    at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:697) 
    at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:420) 
    at org.glassfish.jersey.client.JerseyInvocation$Builder.get(JerseyInvocation.java:316) 
    at com.github.dockerjava.jaxrs.VersionCmdExec.execute(VersionCmdExec.java:26) 
    at com.github.dockerjava.jaxrs.VersionCmdExec.execute(VersionCmdExec.java:13) 
    at com.github.dockerjava.jaxrs.AbstrSyncDockerCmdExec.exec(AbstrSyncDockerCmdExec.java:23) 
    at com.github.dockerjava.core.command.AbstrDockerCmd.exec(AbstrDockerCmd.java:35) 
    at com.nirima.jenkins.plugins.docker.DockerCloud$DescriptorImpl.doTestConnection(DockerCloud.java:698) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:335) 
    at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:175) 
    at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:108) 
    at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:124) 
    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58) 
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746) 
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876) 
    at org.kohsuke.stapler.MetaClass$5.doDispatch(MetaClass.java:236) 
    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58) 
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746) 
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876) 
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649) 
    at org.kohsuke.stapler.Stapler.service(Stapler.java:238) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) 
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669) 
    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:135) 
    at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:126) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) 
    at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:80) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84) 
    at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
    at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
    at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
    at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
    at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
    at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
    at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249) 
    at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
    at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76) 
    at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) 
    at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) 
    at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) 
    at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) 
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585) 
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) 
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:553) 
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223) 
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127) 
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515) 
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) 
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061) 
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) 
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) 
    at org.eclipse.jetty.server.Server.handle(Server.java:499) 
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311) 
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257) 
    at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544) 
    at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: shaded.org.apache.http.client.ClientProtocolException 
    at shaded.org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:186) 
    at shaded.org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:71) 
    at org.glassfish.jersey.apache.connector.ApacheConnector.apply(ApacheConnector.java:435) 
    ... 82 more 
Caused by: shaded.org.apache.http.ProtocolException: The server failed to respond with a valid HTTP response 
    at shaded.org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:151) 
    at shaded.org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:57) 
    at shaded.org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:259) 
    at shaded.org.apache.http.impl.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:163) 
    at shaded.org.apache.http.impl.conn.CPoolProxy.receiveResponseHeader(CPoolProxy.java:167) 
    at shaded.org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:273) 
    at shaded.org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125) 
    at shaded.org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:271) 
    at shaded.org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184) 
    at shaded.org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88) 
    at shaded.org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) 
    at shaded.org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184) 

我不知道我是否失去了一些東西或許有更有效的方法。

非常感謝您的提示。

雲設置:

cloud settings screenshot

+0

做能否請您發表您的configs爲泊塢雲區? – shizhz

回答

0

感謝您跟隨Katacoda場景。這聽起來像Docker守護進程沒有監聽HTTPS端口。 docker-machine命令將返回Docker虛擬機的IP地址,但默認情況下,守護進程不會在HTTPS端口上偵聽,而只能通過Unix套接字偵聽。

因爲你在同一臺機器上,你可以嘗試使用類似unix:///var/run/docker.sock/var/run/docker.sock而不是IP /端口。

如果你想使用IP /端口,您需要修改多克爾守護程序設置,與boot2docker這是通過https://github.com/docker/machine/issues/3859

+0

當在Docker URL中放入unix:///var/run/docker.sock時,我得到以下異常: 'org.newsclub.net.unix.AFUNIXSocketException:Permission denied(socket:/run/docker.sock)' ssh我在/ var/lib/boot2docker/profile中找到了docker設置的配置文件: [boot2docker config](http://imgur.com/a/SIO9L) 我試圖遵循一些提示,包括DOCKER_OPTS,但沒有爲我工作。我在這件事上是一個新手,所以也許這是一個好方向,但我不注意一些細節。你能否更確切地指出需要做些什麼來授予許可? – David762