2016-05-30 83 views
0

我無法設置publicPort和privatePort在泊塢窗集裝箱貨櫃。 我創建搬運工容器Java庫docker-client爲Java https://github.com/spotify/docker-client將端口設置在碼頭工人的碼頭工人,客戶端的Java

我已經創造了當地碼頭工人形象「mobillogix /硒鉻」。

DockerClient搬運工= DefaultDockerClient.fromEnv()建立();

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

此代碼創建容器:

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

,但我想用端口創建容器:

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

回答

2

documentation,這裏的正確的語法是:

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