ports 用来把服务端口映射给宿主机,可以访问宿主机 IP 地址的人都可以访问 ports 映射出来的端口;expose 用来把服务端口开放给其他服务,客户端服务可以通过 links 功能访问服务端服务的端口。
其实这俩个是同一个意思,如果 Dockerfile 里面通过 EXPOSE 暴露了端口出来,那么在通过 docker-compose 创建的服务也会暴露这个端口出来。如果 Dockerfile 里面没有暴露端口出来,可以在后面通过 docker-compose 的 expose 把服务的端口暴露出来。
使用下面的参数可以将服务的80端口映射宿主机的 8080 端口(也可以是其他端口)。
services:
nginx:
image: tflinux_nginx1.20
ports:
- 8080:80
使用下面的参数可以将服务的80端口映射到宿主机的 10.16.1.1 的 8080 端口(也可以是其他端口)。
services:
nginx:
image: tflinux_nginx1.20
ports:
- 10.16.1.1:8080:80
使用下面的参数可以将服务的 80 端口映射到宿主机的一个随机的端口上。
services:
nginx:
image: