-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Description
Dears,
I am using a simple nginx server as proxy to the docker socket, instead of enabling the remote API directly on Docker. Reason is: I would like some access restrictions, but simpler than the whole certificate thing.
Here is the nginx configuration:
upstream docker {
server unix:/var/run/docker.sock;
}
server {
listen 2375 default_server;
location / {
proxy_pass http://docker;
auth_basic_user_file /etc/nginx/.htpasswd;
auth_basic "Access restricted";
}
}
Say my server is http://docker-server:2735/
For any HTTP GET request initiated by the multiple commands, it succeeds if I set the URL as http://user:pass@docker-server:2735/
However, it fails when it comes to POST requests or DELETE requests. You'll find the full stack trace below.
I know this isn't how things should be done so ... Could you please advise me a possible alternative, or consider this as a feature request ?
Many thanks for your help.
Cheers from Belgium,
Eric
Feb 27, 2015 1:55:08 PM org.glassfish.jersey.filter.LoggingFilter log
INFO: 1 * Sending client request on thread http-nio-8080-exec-6
1 > GET http://maestro:maestro@192.168.252.187:2375/containers/PROD_TOMCAT_ebis/json
1 > Accept: application/json
Feb 27, 2015 1:55:08 PM org.glassfish.jersey.filter.LoggingFilter log
INFO: 2 * Client response received on thread http-nio-8080-exec-6
2 < 200
2 < Connection: keep-alive
2 < Content-Length: -1
2 < Content-Type: application/json
2 < Date: Fri, 27 Feb 2015 12:54:52 GMT
2 < Server: nginx/1.4.6 (Ubuntu)
2 < Transfer-Encoding: chunked
--- response hidden for privacy reasons ;)
Feb 27, 2015 1:55:08 PM org.glassfish.jersey.filter.LoggingFilter log
INFO: 3 * Sending client request on thread http-nio-8080-exec-6
3 > POST http://maestro:maestro@192.168.252.187:2375/containers/PROD_TOMCAT_ebis/start
3 > Accept: application/json
3 > Content-Type: application/json
{"Binds":["/srv/ebis/requests:/srv/ebis/requests:rw"],"PortBindings":{"8009/tcp":[{"HostIp":"","HostPort":"8009"}],"8080/tcp":[{"HostIp":"","HostPort":"8080"}]}}
Feb 27, 2015 1:55:08 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [be.informex.docker.manager.servlets.AjaxActionServlet] in context with path [/docker-manager] threw exception
javax.ws.rs.ProcessingException: org.apache.http.client.ClientProtocolException
at org.glassfish.jersey.apache.connector.ApacheConnector.apply(ApacheConnector.java:513)
at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:246)
at org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:667)
at org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:664)
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:424)
at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:664)
at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:424)
at org.glassfish.jersey.client.JerseyInvocation$Builder.post(JerseyInvocation.java:333)
at com.github.dockerjava.jaxrs.StartContainerCmdExec.execute(StartContainerCmdExec.java:26)
at com.github.dockerjava.jaxrs.StartContainerCmdExec.execute(StartContainerCmdExec.java:13)
at com.github.dockerjava.jaxrs.AbstrDockerCmdExec.exec(AbstrDockerCmdExec.java:47)
at com.github.dockerjava.core.command.AbstrDockerCmd.exec(AbstrDockerCmd.java:28)
at com.github.dockerjava.core.command.StartContainerCmdImpl.exec(StartContainerCmdImpl.java:287)
at be.informex.docker.manager.requesters.DockerRequester.startTomcatContainer(DockerRequester.java:125)
at be.informex.docker.manager.actions.containers.StartContainerAction.executeValidRequest(StartContainerAction.java:56)
at be.informex.docker.manager.actions.containers.StartContainerAction.executeValidRequest(StartContainerAction.java:1)
at be.informex.docker.manager.AbstractDockerManagerAction.execute(AbstractDockerManagerAction.java:75)
at be.informex.docker.manager.AbstractAjaxHandler.executeAction(AbstractAjaxHandler.java:55)
at be.informex.docker.manager.AbstractAjaxHandler.executeAction(AbstractAjaxHandler.java:43)
at be.informex.docker.manager.ajax.StartContainerAjaxHandler.handleRequest(StartContainerAjaxHandler.java:39)
at be.informex.docker.manager.servlets.AjaxActionServlet.executeAction(AjaxActionServlet.java:164)
at be.informex.docker.manager.servlets.AjaxActionServlet.doPost(AjaxActionServlet.java:53)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:644)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:537)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1085)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:658)
at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1556)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1513)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.http.client.ClientProtocolException
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:186)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:72)
at org.glassfish.jersey.apache.connector.ApacheConnector.apply(ApacheConnector.java:465)
... 48 more
Caused by: org.apache.http.client.NonRepeatableRequestException: Cannot retry request with a non-repeatable request entity.
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:208)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:195)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:86)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:108)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
... 50 more