1. EXPOSE
1.1. 指令
EXPOSE <port> [<port>/<protocol>...]
1.2. 描述
EXPOSE 指令是声明运行时容器提供服务端口。这里主要是进行声明和描述,便于容器使用者识别镜像的服务端口,可以使用 docker inspect 查看到该端口声明。声明的端口可以是TCP的,也可以是UDP。
这里声明主要是给用镜像使用者查看的,并不会因为有该声明就一定会启动监听该端口,实际监听端口的还是进程实际的配置
在声明的端口是实际提供的服务完全一致的情况下,docker run 时默认情况下并不会直接将该端口暴露对外访问,但可以使用 -P 映射一个宿主机上的随机端口,或者 -p 明确和宿主机的端口绑定,或者使用 --net=host 的方式直接监听宿主机的端口。
1.3. 示例
例如在Dockerfile中正确声明tcp和udp的80端口
EXPOSE 80/tcp
EXPOSE 80/udp
用户使用镜像时的方法一般如下
docker run -p 80:80/tcp -p 80:80/udp ...
容器启动后就可以通过访问宿主机的对应端口来访问容器里面的服务。