Docker可以将多个容器端口映射到一个主机端口吗?

Der*_*rek 4 docker docker-networking

基于我的理解端口映射是1比1,我不明白为什么用于容器数据中的端口映射的数据结构是这样的,

"NetworkSettings": {
[...]
"Ports": {
    "8888/tcp": [
        {
            "HostIp": "0.0.0.0",
            "HostPort": "8888"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

"8888/tcp"键映射到一个列表,而不是单个对象.因此在Java客户端中,Ports的数据结构是这样的Map<String, List<PortBinding>>,但是List这里只能包含1个元素吗?还是我非常想念一些基本的东西?

joh*_*s85 9

这是完全合法的:

docker run -tid -p 8080:80 -p 8090:80 nginx

"Ports": {
            "443/tcp": null,
            "80/tcp": [
                {
                    "HostIp": "0.0.0.0",
                    "HostPort": "8090"
                },
                {
                    "HostIp": "0.0.0.0",
                    "HostPort": "8080"
                }
            ]
        }
Run Code Online (Sandbox Code Playgroud)

所以不,它不是1比1.

  • 是否可以将多个 docker 端口映射到 1 个主机端口? (3认同)