簡體   English   中英

為Docker-Client for Java設置Docker中容器的端口

[英]Set ports for container in docker for docker-client for java

我無法在Docker中為容器設置publicPort和privatePort。 我使用用於Java的Java庫docker-client創建docker容器https://github.com/spotify/docker-client

我已經在本地創建了一個docker鏡像“ mobillogix / selenium-chrome”。

DockerClient docker =默認DockerClient.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);

此代碼創建容器:

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

根據文檔 ,此處正確的語法為:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM