在 Dockerfile 中,`EXPOSE` 指令用于声明容器运行时将要监听的网络端口。
`EXPOSE` 并不会实际打开容器的端口,它只是向用户和开发人员提供了容器内部服务的网络接口信息。通过在 Dockerfile 中使用 `EXPOSE`,你可以向其他人传达容器暴露的网络服务和端口,以便更好地理解容器的使用和部署需求。
要使用 `EXPOSE` 指令,你可以在 Dockerfile 中使用以下语法:
```
EXPOSE <port> [<port>/<protocol>...]
```
- `<port>`:要暴露的容器端口号。可以指定单个端口或一组端口。
- `<protocol>`:(可选)指定端口使用的网络协议,如 TCP 或 UDP。如果未指定协议,默认为 TCP。
以下是一些示例:
```
EXPOSE 80
```
上述示例指示容器将监听端口 80,但没有指定协议,默认为 TCP。
```
EXPOSE 8080/tcp 9000/udp
```
上述示例指示容器将监听端口 8080 使用 TCP 协议,以及端口 9000 使用 UDP 协议。
在 Dockerfile 中使用 `EXPOSE` 指令并不会自动将容器的端口映射到宿主机上。要将容器的端口映射到宿主机上,需要在运行 `docker run` 命令时使用 `-p` 或 `-P` 参数进行端口映射。
例如,要将容器的端口 8080 映射到宿主机的端口 8080,可以运行以下命令:
```
docker run -p 8080:8080 myimage
```
总结起来,`EXPOSE` 指令用于声明容器运行时将要监听的网络端口。它并不会自动进行端口映射,而是提供了容器暴露服务的元数据,需要在 `docker run` 命令中使用 `-p` 或 `-P` 参数来进行端口映射。
标签:容器,8080,Dockerfile,EXPOSE,端口,dockerfile,端口映射 From: https://www.cnblogs.com/tangjicheng/p/17437514.html