当前位置: 首页 > 知识库问答 >
问题:

使用java客户端启动docker容器时连接被拒绝

潘宪
2023-03-14

我是docker新手,我想使用java客户端启动docker容器,

我试过了https://github.com/docker-java/docker-java如下

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();
    }   
}

在bashrc中设置所需的配置

出口DOCKER_HOST=tcp://127.0.0.1:2375

导出DOCKER_OPTS=“-H”tcp://127.0.0.1:2375-Hunix:///var/run/docker.sock"

localhost中的Docker映像

我有这个例外

launch_containers处理异常:launch_containersHttpHostConnectException:连接到launch_containers[/rrors.process]失败:连接拒绝(连接拒绝)rrors.java:228ApacheCorg.glassfish.jersey.process.internal.(ApacheCcope.run)cope.java:444ClientRorg.glassfish.jersey.client.(ClientRnvocation.invoke)nvocation.java:681杰西调用$org.glassfish.jersey.client.(杰西uilder.method)org.glassfish.jersey.client.杰西调用$1.call(杰西nvocation.java:681)在org.glassfish.jersey.internal.Errors.process(Errors.java:315)在org.glassfish.jersey.internal.Ejavax.ws.rs.(Eorg.apache.http.conn.)在127.0.0.1:2375E127.0.0.1(Eorg.glassfish.jersey.apache.connector.)在onnector.apply请求onnector.java:481内窥镜(请求org.glassfish.jersey.client.)在untime.invoke杰西untime.java:252(杰西org.glassfish.jersey.client.)在1.call杰西调用$Bnvocation.java:684(杰西调用. java: 437)在org. glassfish. jersey. client。杰西调用$Builder. post(杰西调用. java: 343)在com. github. dockerjava. jaxrs。StartContainerCmdExec.执行(StartContainerCmdExec. java: 29)在

共有1个答案

尉迟宇定
2023-03-14

我解决了这个问题,我应该得到容器ID,如下所示

   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();

参考

https://github.com/docker-java/docker-java/wiki

 类似资料:
  • 试图在localhost中建立从app容器到mysql容器的连接,出现连接拒绝异常 我们正在采取一种docker的方法来调用rest api服务来采用微服务的方法。我们正在建立应用程序容器和mysql容器之间的连接,同时我们编写了一个docker-compose文件,创建了mysql容器和应用程序容器,为这两个容器公开了端口。下面是运行docker-compose文件docker-compose

  • 我正在尝试运行https://github.com/hazelcast/hazelcast-nodejs-client的“使用客户端”部分中提供的基本示例代码 我收到连接拒绝错误。我在我的Mac和PC机器上尝试了这个,结果相同。它们运行的是Node v6.9.1。我没有任何特殊的防火墙设置。甚至尝试完全打开Windows防火墙。 我错过了什么吗? 首先,我创建了一个空节点项目,然后: 然后创建了一

  • 我试图为Nginx+PHP(Laravel)+MySQL构建docker组合容器,但我不断收到连接拒绝错误 Docker-compose.yml 在中,我有一个全新的Laravel应用程序,它具有基本的SQL设置 所有容器都运行时没有错误,我可以使用以下方法连接到MySQL容器 但当我试图从浏览器访问或将ssh直接导入php容器时,我总是得到错误2002。 我有nginx和mysql运行在服务器上

  • 我的connect调用的结果始终是10061:连接被拒绝。 如果我将服务器代码更改为绑定到::(或者将空主机传递给getaddrinfo()(同样的事情)),并将客户机代码更改为在getaddrinfo()调用中指定空主机,那么V4客户机可以很好地连接。 谁能解释一下为什么?我没有读到任何东西,如果我们想要双套接字行为,我们必须指定一个空主机(因此使用INADDR_ANY)。这不可能是一个要求,因

  • 我正在运行2个spring boot应用程序:一个客户端和rest-api。客户机与rest-api通信,rest-API与mongodb数据库通信。所有3层都在docker容器中运行。 我启动容器,通常指定docker文件中公开的端口,并将它们映射到主机上的端口,例如:-p 7070:7070,其中7070是docker文件中公开的端口。 当我通过< code > Java-jar[applic

  • 我有一个运行基本. jmx测试的JMeter 5.3容器。测试中有Johrstrom的Prometheus插件,为端口9270配置。如果我在Docker之外运行测试,我可以使用“curllocalhost:9270”来获取指标。当我在Docker内运行测试时,情况类似。如果我转到JMeter Docker命令行,我可以运行“wgetlocalhost:9270”(图中没有curl),它会给我指标。