[英]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.