为啥端口需要用冒号分隔两次?
Posted
技术标签:
【中文标题】为啥端口需要用冒号分隔两次?【英文标题】: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"
有人能解释一下这个端口表示是什么意思吗?
【问题讨论】:
【参考方案1】:第一个端口是主机的端口,第二个是远程端口(即:在容器中)。该表达式将远程端口绑定到本地端口。
在示例中,您将容器的 8080 端口映射到主机的 8080 端口,但使用不同的端口是完全正常的(例如:48080:8080)
【讨论】:
【参考方案2】:如果'host'端口和发布端口的':'被省略,例如。 'docker run -d -p 3000 myimage
'。 Docker 会自动为你分配一个(高数)主机端口。您可以通过运行“docker ps
”来查看它。
【讨论】:
以上是关于为啥端口需要用冒号分隔两次?的主要内容,如果未能解决你的问题,请参考以下文章
需要解析冒号分隔的字符串,如果在plsql中找到匹配的则去掉部分字符串