6

ポート マッピングは 1 対 1 であるという私の理解に基づいて、コンテナ データのポート マッピングに使用されるデータ構造がなぜこのようなものなのか、理解できません。

"NetworkSettings": {
[...]
"Ports": {
    "8888/tcp": [
        {
            "HostIp": "0.0.0.0",
            "HostPort": "8888"
        }
    ]
}

キーは"8888/tcp"、単一のオブジェクトではなくリストにマップされます。したがって、Java クライアントでは、Ports のデータ構造は次のようになりますMap<String, List<PortBinding>>が、Listここには 1 つの要素しか含めることができません。それとも、基本的なことをひどく見逃していましたか?

4

3 に答える 3

14

これは完全に合法です:

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"
                }
            ]
        }

いいえ、1対1ではありません。

于 2016-06-08T03:38:42.187 に答える
1

johnharris85 の答えは正しいです。ここで、複数のホスト ポートを同じコンテナー ポートにマップすることはできますが、その逆は不可能であることを指摘したいと思います (異なる IP アドレスを持っている場合を除く)。郵便配達員が、家番号が同じ 2 つの家に物を届ける方法を考えてみてください。

于 2021-06-27T07:49:38.023 に答える