EXPOSE

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

EXPOSE指令通知Docker容器在运行时, 在指定的网络端口上进行监听。可以指定端口是监听在TCP上还是UDP上,如果未指定协议,则默认值为TCP

EXPOSE指令实际上不会真的发布端口。它充当构建镜像的人员和运行容器的人员之间的一种文档功能的角色,告诉用户打算发布的端口的信息。要在运行容器时真正发布端口,请在docker run上使用-p发布并映射一个或多个端口,或使用-P发布所有需要暴露的端口并将其随机映射到主机的端口。

默认情况下,EXPOSE假定使用TCP。我们也可以指定UDP

EXPOSE 80/udp

要同时在TCPUDP上暴露端口,请包括以下两行:

EXPOSE 80/tcp
EXPOSE 80/udp

在这种情况下,如果将-Pdocker run配合使用,则该端口仅对TCP公开一次,对于UDP公开一次。请记住,-P在主机上使用临时的主机端口,因此该端口对于TCPUDP将是不同的。

无论EXPOSE设置如何,都可以在运行时使用-p覆盖它们。例如:

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

要在主机系统上设置端口重定向,请参阅使用-Pdocker network命令支持创建网络以便在容器之间进行通信,而无需暴露或发布特定端口,因为连接到网络的每一个容器都可以在端口之上相互通信。有关详细信息,请参阅此功能的概述

Last updated