【问题标题】:Why do ports need to be specified twice separated by a colon?为什么端口需要用冒号分隔两次?
【发布时间】:2017-10-27 15:47:06
【问题描述】:

很多时候,我在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"

有人能解释一下这个端口表示是什么意思吗?

【问题讨论】:

    标签: networking docker port docker-compose


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-16
        • 2022-01-05
        • 1970-01-01
        • 2022-07-12
        • 2010-12-15
        • 2017-03-20
        相关资源
        最近更新 更多