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

标签 networking docker port docker-compose

很多时候,我看到在 Docker Networking in Compose 中的 Docker Compose 文件中用冒号描述了两次端口。页:

version: "3"
services:

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

networks:
  default:
    # Use a custom driver
    driver: custom-driver-1

我经常想知道为什么 "8000:8000"而不仅仅是"8000"
然后我看到了这个例子,它有两个不同的端口:
version: "3"
services:
  web:
    build: .
    ports:
      - "8000:8000"
  db:
    image: postgres
    ports:
      - "8001:5432"

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

最佳答案

第一个端口是主机的端口,第二个是远程端口(即:在容器中)。该表达式将远程端口绑定(bind)到本地端口。
在示例中,您将容器的 8080 端口映射到主机的 8080 端口,但使用不同的端口是完全正常的(例如:48080:8080)

关于networking - 为什么需要指定两次端口,用冒号分隔?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44206827/

相关文章:

ssh - GCP-SSH 连接超时

c++ - 为什么我们不关心位顺序?

php - 拆分表单提交以加快传输时间

c# - 使用通用主机 IHostBuilder 时检测来自 docker 的关闭信号

mysql - 使用 Node+MySql Docker 容器登录注册表单

amazon-web-services - 我应该使用 AWS Elastic Beanstalk 还是 Amazon EC2 Container Service (ECS) 来扩展 Docker 容器?

c - C 编程中从服务器到客户端的文件传输

swift - 使用 Alamofire 4.0 和 Swfit 3 解析字典数组

mysql - Docker 上的 Laravel [2002] 连接拒绝端口 3307 上的 Mysql

linux - 我如何从 docker 容器中知道主机的映射端口?