为什么端口需要用冒号分隔两次?

时间:2017-05-26 17:06:00

标签: 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"

有人可以解释这个端口表示的含义吗?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

如果省略了“主机”端口和发布端口的“:”,例如。 'docker run -d -p 3000 myimage'。 Docker将自动为您分配一个(高编号)主机端口。您可以通过运行“ docker ps”来查看它。