简单解释docker的端口和端口暴露(EXPOSE)

2023年 7月 16日 91.6k 0

20190202.png该Dockerfile指令EXPOSE,Docker run时候可以选择-p-P,而docker-composeexposeports如何连接[[containers]](https://www.docker.com/what-container)在Docker的网络和托管的机器使用。本文将解释这些命令之间的区别以及如何在Dockerfile和docker-compose.yml中有效地使用它们。

Docker端口

要查看容器上定义的端口列表,可以使用docker port命令。

docker port CONTAINER [PRIVATE_PORT[/PROTOCOL]]

它列出了所有端口映射或Docker容器的特定映射。

docker port test_container
7890/tcp -> 0.0.0.0:4321
9876/tcp -> 0.0.0.0:1234
docker port test_container 7890/tcp
0.0.0.0:4321

Dockerfile EXPOSE与publish

暴露(EXPOSE)

在编写Dockerfiles时,指令EXPOSE告诉Docker正在运行的容器侦听特定的网络端口。这可以作为一种端口映射文档,然后可以在发布端口时使用。

EXPOSE <port> [<port>/<protocol>...]

你也可以在docker run命令中指定它,例如:

docker run --expose=1234 my_app

但EXPOSE不允许通过定义的端口与同一网络外的容器或主机进行通信。要允许这种情况发生,你需要发布(publish)端口。

Publish端口并将其映射到主机

使用docker run命令在容器网络外部发布容器的端口并将它们映射到主机的端口时,可以使用多个标志。这些标志-p-P,他们在是否要发布一个或所有端口方面不同。

要在运行容器时实际发布端口,请使用-p标志on docker run来发布和映射一个或多个端口,或使用-P标志发布所有公开的端口并将它们映射到高阶端口。

 -  Docker文档:EXPOSE

docker run -p 80:80/tcp -p 80:80/udp my_app

在上面的示例中,-p标志后面的第一个数字是主机端口,第二个数字是容器端口。

要发布你在Dockerfile中定义的所有端口EXPOSE并将它们绑定到主机,你可以使用该-P标志。

docker run -P my_app

Docker Compose EXPOSE vs Prot

使用Docker Compose定义容器时,docker-compose.yml使用指令exposeports公开和发布容器的端口。

暴露(EXPOSE)

就像EXPOSE在Dockerfile中一样,该指令用于公开端口而不将它们发布到主机 - 它们只能被同一网络上的链接服务访问。

expose:
 - "3000"
 - "8000"

ports

这用于将端口发布到主机。你可以使用简短的语法,也可以提供更详细的配置。

指定ports(HOST:CONTAINER)或仅指定容器端口(选择短暂的主机端口)。

ports:
 - "3000"
 - "8000:8000/tcp"
 - "127.0.0.1:8001:8001"

长格式语法允许配置无法以简短形式表示的其他字段。

  • target:容器内的端口
  • published:公开暴露的port
  • protocol:端口协议(tcpudp
  • modehost用于在每个节点上发布主机端口,或者ingress用于负载平衡的群集模式端口。
ports:
  - target: 80
    published: 8080
    protocol: tcp
    mode: host

了解更多

更多官方文档,请查阅如下,你也可以关注本站

  • Docker命令:端口
  • Docker文档:Dockerfile EXPOSE
  • Docker Docs:Docker撰写公开
  • Docker Docs:Docker撰写端口

    学习更多

学习如何使用Docker CLI命令,Dockerfile命令,使用这些命令可以帮助您更有效地使用Docker应用程序。查看Docker文档和我的其他帖子以了解更多信息。

  • docker目录
  • 白话容器

相关文章

LeaferJS 1.0 重磅发布:强悍的前端 Canvas 渲染引擎
10分钟搞定支持通配符的永久有效免费HTTPS证书
300 多个 Microsoft Excel 快捷方式
一步步配置基于kubeadmin的kubevip高可用
istio全链路传递cookie和header灰度
REST Web 服务版本控制

发布评论