为docker-client for java设置docker中容器的端口

我不能在docker中为容器设置publicPort和privatePort。 我创builddocker容器与Java库docker-client为Java https://github.com/spotify/docker-client

我已经在本地创build了一个docker镜像“mobillogix / selenium-chrome”。

DockerClient docker = DefaultDockerClient.fromEnv()。build();

  // Bind container ports to host ports final String[] ports = {"44444", "59004"}; final String[] ports1 = {"4444", "5900"}; final Map<String, List<PortBinding>> portBindings = new HashMap<String, List<PortBinding>>(); for (String port : ports) { List<PortBinding> hostPorts = new ArrayList<PortBinding>(); hostPorts.add(PortBinding.of("0.0.0.0", port)); portBindings.put(port, hostPorts); } final HostConfig hostConfig = HostConfig.builder().portBindings(portBindings).build(); final ContainerConfig containerConfig = ContainerConfig.builder() .hostConfig(hostConfig) .image("mobillogix/selenium-chrome").exposedPorts(ports1) .build(); final ContainerCreation creation = docker.createContainer(containerConfig); final String id = creation.id(); // Start container docker.startContainer(id); final List<Container> containers = docker.listContainers(); webDriver(); // Kill container docker.killContainer(id); // Remove container docker.removeContainer(id); 

这段代码创build容器:

 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6beec961dfcf mobillogix/selenium-chrome "/opt/bin/entry_point" 4 seconds ago Up 2 seconds 4444/tcp, 5900/tcp elegant_kare 

与港口

4444 / tcp,5900 / tcp

但我想创build与端口的容器:

0.0.0.0:44444-> 4444/tcp,0.0.0.0:59004->5900/tc

根据文档 ,这里的正确语法是:

 hostPorts.add(PortBinding.of("0.0.0.0", 44444)); portBindings.put(4444, hostPorts); hostPorts.add(PortBinding.of("0.0.0.0", 59004)); portBindings.put(5900, hostPorts); 

你在循环中执行的是:

 hostPorts.add(PortBinding.of("0.0.0.0", 44444)); portBindings.put(44444, hostPorts); hostPorts.add(PortBinding.of("0.0.0.0", 59004)); portBindings.put(50004, hostPorts);