为了账号安全,请及时绑定邮箱和手机立即绑定

在主机模式下运行容器后,空IP地址

在主机模式下运行容器后,空IP地址

波斯汪 2021-04-05 17:40:33
我想使用Java库以主机模式创建Docker容器https://github.com/spotify/docker-client在我的容器中存在我的应用程序,该应用程序在运行后应打开20202容器到下一个使用的端口。所以我要做的代码是Map<String, List<PortBinding>> portBindings = Maps.newHashMap();portBindings.put("20202", Lists.newArrayList(PortBinding.of("localhost", "20202")));        HostConfig hostConfig = HostConfig.builder()        .networkMode("host")        .portBindings(portBindings)        .build();ContainerConfig config = ContainerConfig.builder()        .hostConfig(hostConfig)        .image("myImage")        .exposedPorts("20202")        .cmd("myProg", "arg1", "arg2"))        .build();DefaultDockerClient.fromEnv().build();client.pull(config.image());ContainerCreation creation = client.createContainer(config);client.startContainer(creation.id());ContainerInfo info = client.inspectContainer(creation.id());我在日志中看到了如何从本地注册表中提取图像,但是当我的主程序尝试在创建的容器中运行命令时,出现以下异常org.apache.http.client.ClientProtocolException:URI没有指定有效的主机名:http://:20202当我的程序运行此容器后,我从命令行检查了手册是否存在容器,并且端口是否在本地打开127.0.0.1:20202并且还可以,容器存在并正在运行(我在之后看到了它们docker ps)端口已打开,正在侦听,我使用netstat -altp--->检查tcp        0      0 127.0.0.1:20202  0.0.0.0:*  LISTEN      23839/myProg我可以使用我的程序 127.0.0.1:20202我看到问题是在我的主程序中尝试ContainerInfo使用以下方法获取有关主机的信息时ContainerInfo info = client.inspectContainer(creation.id());String host = info.networkSettings().ipAddress(); // host is empty所以问题是,如何把对ContainerInfo有关信息localhost或127.0.0.1当我设置主机模式的HostConfig?为什么这不是自动发生的?
查看完整描述

1 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

在主机模式下,端口绑定将被忽略,因为您的代码负责选择端口并将其绑定。Docker只是将您的主机修补到主机网络。因此,无论您是否通过端口映射,它都不会在主机模式下使用


同样,当您运行容器为NetworkMode时,没有这样分配IP到容器。您需要使用主机IP


$ docker run -d --network host alpine sleep 900

804006d7f917637ee615d877558da7fae5b01a03af713c773098d0ef563d06c2


$ docker inspect 804006d7f917637ee615d877558da7fae5b01a03af713c773098d0ef563d06c2 | grep IPA

  "SecondaryIPAddresses": null,

  "IPAddress": "",

  "IPAMConfig": null,

  "IPAddress": "",

从上面可以看到,容器在主机模式下永远不会获得ip


查看完整回答
反对 回复 2021-04-28
  • 1 回答
  • 0 关注
  • 184 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信