端口映射

映射容器内应用的服务端口到本地宿主机器。
docker 容器在启动的时候,如果不指定端口映射参数,在容器外部是无法通过网络来访问容器内的网络应用和服务的。

实现

当容器中运行一些网络应用,要让外部访问这些应用时,可以通过 -P 或 -p 参数两种方式来指定端口映射。

  • -p:指定要映射的端口,参数一是宿主机端口,参数二是运行容器端口(一个容器不能有重复端口,否则会启动失败)
  • -P:将容器内部开放的网络端口随机映射到宿主机的一个端口上

    亦可使用 Dockerfile 文件中的 EXPOSE 指令来配置。

  1. -p hostPort:containerPort

支持映射多个端口:

  1. -p 80:80 -p 443:443

这里我们启动一个 nginx 应用,使用 --name 参数给它增加一个别名 web。

  1. [root@www ~]# docker run --name web -d -p 8000:80 nginx

以上指令会将宿主机的 8000 端口映射到容器的 80 端口上。
然后我们查看一下这个容器的运行情况:

  1. \[root@www ~]# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. c7a8af43c3f6 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 启动成功,并将端口成功映射。
端口映射 - 图1