maven package docker:build - connection refused

2020-06-01 00:00发布

问题:

I am trying to directly build a docker image with maven with mvn package docker:build.

Docker is running and docker ps shows me my containers, so I assume that everything is running correctly. I do get the following error though:

[ERROR] Failed to execute goal com.spotify:docker-maven-plugin:0.2.3:build (default-cli) on project reservierung: Exception caught: java.util.concurrent.ExecutionException: com.spotify.docker.client.shaded.javax.ws.rs.ProcessingException: o rg.apache.http.conn.HttpHostConnectException: Connect to localhost:2375 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect ->

My first approach was that since I am working on windows I need to call the docker-machine ip address instead of localhost, but that also didn't work. I am kind of at a loss here, because I assume that it's something simple that I am doing wrong, but I cannot find anything about the connection refused error when docker is (seemingly) running properly.

I am sorry if this is trivial.

回答1:

On Windows with Docker/Hyper-V this occurred to me with com.spotify:docker-maven-plugin:1.0.0. There is a discussion about this on another forum, where they advise to turn on

in docker Settings/General Tab. It worked for me.



回答2:

i solve the problem using this setting:

<configuration>
	<imageName>10.10.8.175:5000/${artifactId}:${project.version}</imageName>
	<dockerHost>https://192.168.99.100:2376</dockerHost>
	<dockerCertPath>C:\Users\AtomView\.docker\machine\machines\default</dockerCertPath>
	<dockerDirectory>src/main/resources/docker</dockerDirectory>
	<resources>
		<resource>
			<targetPath>/</targetPath>
			<directory>${project.build.directory}</directory>
			<include>*.zip</include>
		</resource>
	</resources>
</configuration>



回答3:

Try to run 'docker-machine ls' to check for the IP, if it's not a localhost address, you will need a dockerHost tag in your plugin configuration. ex: <dockerHost>https://192.168.99.100:2376</dockerHost>

newest version of the plugin is 0.4.1 not 0.2.3



回答4:

On MacOs, I just set the environment variables as shown by

docker-machine env

When running the build from an IDE, make sure these variables are properly set.



回答5:

In ubuntu 16.04, I solved it with:

DOCKER_HOST=unix:///var/run/docker.sock mvn clean install 


回答6:

On windows 7 64 the docker env seems a bit tricky to install as it requires a linuxVM to run (update issues with previous vbox installation) https://github.com/docker/machine/issues/3396 )

Luckily in the docker quickstart terminal we can do:

   $ docker-machine.exe env
   export DOCKER_TLS_VERIFY="1"
   export DOCKER_HOST="tcp://192.168.99.101:2376"
   export DOCKER_CERT_PATH="C:\Users\uv\.docker\machine\machines\default"
   export DOCKER_MACHINE_NAME="default"
   # Run this command to configure your shell:
   # eval $("C:\Program Files\Docker Toolbox\docker-machine.exe" env)

showing us what to put into the plugin configuration

   <dockerHost>https://192.168.99.101:2376</dockerHost>

but only after using the advice found here:

Docker: An error occurred trying to connect

with the important part being:

Run FOR /f "tokens=*" %i IN ('docker-machine env --shell cmd default') DO %i

we can run the mvnw docker:build successfully in the cmd/intellij terminal :)



回答7:

Below change fixed my issue on OSX El Capitan, Docker Version 1.12.1 (build: 12133):

export DOCKER_HOST=unix:///var/run/docker.sock

Please restart docker if mvn package docker:build still fails.



回答8:

update maven docker plugin to latest version 1.2.0. This solves the problem.



回答9:

I fixed this by updating docker-maven-plugin version to 1.4.13.



回答10:

If docker is running of Docker for Windows, then below things need to be completed: 1. Open Docker Settings 2. Enable the checkbox - Expose daemon on tcp://localhost:2375 without TLS

Normally, docker opens up port 2376 for docker client but for legacy or other application connect using 2375 port using TCP. If you are using com.spotify it depends upon version also. The latest com.spotify plugin with latest docker working correctly else need to define a variable that tells the plugin to get the hostname from specified environment variable.

To set the hostname manually for the docker set the variable into the environment variable list: DOCKER_HOST="tcp://127.0.00:2376"

It will work for localhost, if docker is running on another machine then set the ip of the same machine.