EXPOSE
EXPOSE指令通知docker容器在运行时侦听指定的网络端口
语法
EXPOSE <port> [<port>/<protocol>...]
- 端口号可以任意指定
- 协议指定端口是侦听
TCP还是UDP,默认为TCP
# 指定TCP协议端口为80
EXPOSE 80
# 指定UDP协议端口为80
EXPOSE 80/udp
作用
EXPOSE指令实际上并不发布端口,它用于提示要发布的端口。使用docker run启动容器时,有2种方式指定容器监听的端口号
- 使用标识符
-P, --publish-all来发布EXPOSE指定的端口,docker会随机映射主机端口到容器的侦听端口 - 使用标识符
-p, --publish指定容器和主机的映射端口-p host-port:container-port/<protocol> # 比如映射主机端口号80到容器8080端口,侦听TCP协议 -p 80:8080/tcp
示例
可以同时设定TCP和UDP监听端口为同一个,因为容器会将其映射到不同的主机端口
EXPOSE 80/tcp
EXPOSE 80/udp
使用-p标识符指定映射端口如下:
$ docker run -it -p 10001:80/tcp -p 10002:80/udp ...