为什么端口需要指定两次,以冒号分隔?

use*_*285 16 port networking docker docker-compose

很多时候,我看到端口用冒号描述了两次,就像在 Compose 中的Docker 网络页面中的这个 Docker Compose 文件中一样:

version: "3"
services:

  web:
    build: .
    ports:
      - "8000:8000"
  db:
    image: postgres

networks:
  default:
    # Use a custom driver
    driver: custom-driver-1
Run Code Online (Sandbox Code Playgroud)

我经常想知道为什么"8000:8000"而不是简单地"8000"

然后我看到了这个例子,它有两个不同的端口:

version: "3"
services:
  web:
    build: .
    ports:
      - "8000:8000"
  db:
    image: postgres
    ports:
      - "8001:5432"
Run Code Online (Sandbox Code Playgroud)

有人可以解释这个端口表示是什么意思吗?

Gon*_*heu 13

第一个端口是主机的端口,第二个是远程端口(即:在容器中)。该表达式将远程端口绑定到本地端口。

在示例中,您将容器的 8080 端口映射到主机的 8080 端口,但使用不同的端口是完全正常的(例如:48080:8080)