EXPOSE

参考:EXPOSE

EXPOSE指令通知docker容器在运行时侦听指定的网络端口

语法

EXPOSE <port> [<port>/<protocol>...]
  • 端口号可以任意指定
  • 协议指定端口是侦听TCP还是UDP,默认为TCP
# 指定TCP协议端口为80
EXPOSE 80
# 指定UDP协议端口为80
EXPOSE 80/udp

作用

EXPOSE指令实际上并不发布端口,它用于提示要发布的端口。使用docker run启动容器时,有2种方式指定容器监听的端口号

  1. 使用标识符-P, --publish-all来发布EXPOSE指定的端口,docker会随机映射主机端口到容器的侦听端口
  2. 使用标识符-p, --publish指定容器和主机的映射端口
    -p host-port:container-port/<protocol>
    # 比如映射主机端口号80到容器8080端口,侦听TCP协议
    -p 80:8080/tcp
    

示例

可以同时设定TCPUDP监听端口为同一个,因为容器会将其映射到不同的主机端口

EXPOSE 80/tcp
EXPOSE 80/udp

使用-p标识符指定映射端口如下:

$ docker run -it -p 10001:80/tcp -p 10002:80/udp ...