端口映射
映射容器内应用的服务端口到本地宿主机器。
docker 容器在启动的时候,如果不指定端口映射参数,在容器外部是无法通过网络来访问容器内的网络应用和服务的。
实现
当容器中运行一些网络应用,要让外部访问这些应用时,可以通过 -P 或 -p 参数两种方式来指定端口映射。
- -p:指定要映射的端口,参数一是宿主机端口,参数二是运行容器端口(一个容器不能有重复端口,否则会启动失败)
- -P:将容器内部开放的网络端口随机映射到宿主机的一个端口上
亦可使用 Dockerfile 文件中的 EXPOSE 指令来配置。
-p hostPort:containerPort
支持映射多个端口:
-p 80:80 -p 443:443
这里我们启动一个 nginx 应用,使用 --name 参数给它增加一个别名 web。
[root@www ~]# docker run --name web -d -p 8000:80 nginx
以上指令会将宿主机的 8000 端口映射到容器的 80 端口上。
然后我们查看一下这个容器的运行情况:
\[root@www ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESc7a8af43c3f6 nginx "nginx -g 'daemon of…" 52 seconds ago Up 50 seconds 0.0.0.0:8000->80/tcp web
然后本地用浏览器访问 127.0.0.1:8000,出现以下文字,说明 nginx 启动成功,并将端口成功映射。
