gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 21:30:05 25 4
gpt4 key购买 nike

我无法在docker中为容器设置publicPort和privatePort。我使用 java 库 docker-client for java 创建 docker 容器 https://github.com/spotify/docker-client

我已经在本地创建了一个 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);

此代码创建容器:

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

最佳答案

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

关于java - 在 docker 中为 docker-client for java 设置容器端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37529977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com