使用java客户端启动docker容器时连接被拒绝
我是docker新手,我想使用java客户端启动docker容器 我试了如下使用java客户端启动docker容器时连接被拒绝,java,docker,Java,Docker,我是docker新手,我想使用java客户端启动docker容器 我试了如下 package containers.launch_containers; import com.github.dockerjava.api.DockerClient; import com.github.dockerjava.core.DockerClientBuilder; public class StartContainers{ DockerClient dockerClient; pu
package containers.launch_containers;
import com.github.dockerjava.api.DockerClient;
import com.github.dockerjava.core.DockerClientBuilder;
public class StartContainers{
DockerClient dockerClient;
public StartContainers() {
startContainers();
}
public void startContainers() {
try {
dockerClient = DockerClientBuilder.getInstance("tcp://127.0.0.1:2375").build();
//starting the container of hello-world
dockerClient.startContainerCmd("hello-world").exec();
}catch(Exception ex)
{
ex.printStackTrace();
}
}
public static void main(String args[])
{
StartContainers startContainers=new StartContainers();
}
}
dockerClient = DockerClientBuilder.getInstance().build();
//starting the container
CreateContainerResponse container = dockerClient.createContainerCmd("hello-world")
.withCmd()
.exec();
dockerClient.startContainerCmd(container.getId()).exec();
//stop the container
dockerClient.stopContainerCmd(container.getId()).exec();
在bashrc中设置所需的配置
导出DOCKER\u主机=tcp://127.0.0.1:2375
导出DOCKER_OPTS=-Htcp://127.0.0.1:2375 -H
unix:///var/run/docker.sock
localhost中的Docker映像
我有个例外
javax.ws.rs.ProcessingException:
org.apache.http.conn.HttpHostConnectException:连接到
127.0.0.1:2375[/127.0.0.1]失败:连接被拒绝连接被拒绝
org.glassfish.jersey.apache.connector.ApacheConnector.applyApacheConnector.java:481
在
org.glassfish.jersey.ClientRuntime.invokeClientRuntime.java:252
在
org.glassfish.jersey.client.JerseyInvocation$1.callJerseyInvocation.java:684
在
org.glassfish.jersey.client.JerseyInvocation$1.callJerseyInvocation.java:681
位于org.glassfish.jersey.internal.Errors.processErrors.java:315 at
org.glassfish.jersey.internal.Errors.processErrors.java:297 at
org.glassfish.jersey.internal.Errors.processErrors.java:228 at
org.glassfish.jersey.process.internal.RequestScope.runInScopeRequestScope.java:444
在
org.glassfish.jersey.client.JerseyInvocation.invokeJerseyInvocation.java:681
在
org.glassfish.jersey.client.JerseyInvocation$Builder.methodJerseyInvocation.java:437
在
org.glassfish.jersey.client.JerseyInvocation$Builder.postJerseyInvocation.java:343
在
com.github.dockerjava.jaxrs.StartContainerCmdExec.executeStartContainerCmdExec.java:29
在
com.github.dockerjava.jaxrs.StartContainerCmdExec.executeStartContainerCmdExec.java:12
在
com.github.dockerjava.jaxrs.AbstrSyncDockerCmdExec.execAbstrSyncDockerCmdExec.java:23
在
com.github.dockerjava.core.command.absrdockercmd.execabsrdockercmd.java:35
在
com.github.dockerjava.core.command.StartContainerCmdImpl.execStartContainerCmdImpl.java:46
在
容器.launch_containers.StartContainers.startContainersStartContainers.java:18
在
容器。启动容器。StartContainers.StartContainers.java:10
在
容器.launch_容器.StartContainers.mainStartContainers.java:29
我解决了这个问题,我应该得到如下容器Id
package containers.launch_containers;
import com.github.dockerjava.api.DockerClient;
import com.github.dockerjava.core.DockerClientBuilder;
public class StartContainers{
DockerClient dockerClient;
public StartContainers() {
startContainers();
}
public void startContainers() {
try {
dockerClient = DockerClientBuilder.getInstance("tcp://127.0.0.1:2375").build();
//starting the container of hello-world
dockerClient.startContainerCmd("hello-world").exec();
}catch(Exception ex)
{
ex.printStackTrace();
}
}
public static void main(String args[])
{
StartContainers startContainers=new StartContainers();
}
}
dockerClient = DockerClientBuilder.getInstance().build();
//starting the container
CreateContainerResponse container = dockerClient.createContainerCmd("hello-world")
.withCmd()
.exec();
dockerClient.startContainerCmd(container.getId()).exec();
//stop the container
dockerClient.stopContainerCmd(container.getId()).exec();
参考文献