Docker Java API创建容器,端口映射
使用Docker Java API 操作Docker (Docker Java API)
Maven 中引入:
<dependency>
<groupId>com.github.docker-java</groupId>
<artifactId>docker-java</artifactId>
<version>3.2.2</version>
</dependency>
<dependency>
<groupId>com.github.docker-java</groupId>
<artifactId>docker-java-transport-httpclient5</artifactId>
<version>3.2.2</version>
</dependency>
使用Docker Java API 创建容器的时候始终无法将 host
和 container
的端口相映射成功。
查找了很多资料,尝试了很多次之后发现如下方法是可行的:
PortBinding portBinding = PortBinding.parse(containerInfo.getPublicPort() + ":" + containerInfo.getPrivatePort());
HostConfig hostConfig = HostConfig.newHostConfig()
.withPortBindings(portBinding);
CreateContainerResponse response = dockerClient.createContainerCmd(containerInfo.getImage())
.withName(containerInfo.getName())
.withHostConfig(hostConfig)
.withExposedPorts(ExposedPort.parse(containerInfo.getPrivatePort() + "/tcp"))
.exec();
查看Docker容器
成功将主机的 8016
端口(容器对外端口)跟容器的 80
端口(容器内部端口)映射成功。