Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Networking 为什么需要用冒号分隔两次指定端口?_Networking_Docker_Port_Docker Compose - Fatal编程技术网

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

Networking 为什么需要用冒号分隔两次指定端口?,networking,docker,port,docker-compose,Networking,Docker,Port,Docker Compose,很多时候,我在页面的Docker Compose文件中看到两次使用冒号描述端口: 我经常想知道为什么“8000:8000”,而不仅仅是“8000” 然后我看到了这个示例,它有两个不同的端口: version: "3" services: web: build: . ports: - "8000:8000" db: image: postgres ports: - "8001:5432" 有人能解释一下这个端口表示法是什么意思吗?第

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

我经常想知道为什么
“8000:8000”
,而不仅仅是
“8000”

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

version: "3"
services:
  web:
    build: .
    ports:
      - "8000:8000"
  db:
    image: postgres
    ports:
      - "8001:5432"

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

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


在本例中,您将容器的8080端口映射到主机的8080端口,但如果省略了发布端口的“主机”端口和“:”,则使用不同的端口(例如:48080:8080)是完全正常的,例如,“
docker run-d-p3000 myimage
”。Docker将自动为您分配(高数量)主机端口。您可以通过运行“
docker ps
”来查看它

version: "3"
services:
  web:
    build: .
    ports:
      - "8000:8000"
  db:
    image: postgres
    ports:
      - "8001:5432"