端口映射指:允许映射容器内应用的服务端口到本地宿主主机;

一、从外部访问容器应用

在启动容器的时候,如果不指定对应的参数,在容器外部是无法通过网络来访问容器内部的网络应用和服务的。
在容器中运行一些网络应用,要让外部访问这些应用时,可以通过-P或-p参数来指定端口映射。当使用-P(大写的)标记时,Docker会随机映射一个49000~49900的端口到内部容器开放的网络端口:

  1. $ docker run -it -P --name HAProxy haproxy /bin/bash //运行容器
  2. $ docker ps // 查看运行汇总容器的信息,在ports中可查看到主机端口

说明
如下:
端口映射实现访问容器 - 图1

启动容器时通过-P(大写)发现没有ports被暴露出来(原因可能与镜像有关,有的镜像会暴露出来端口);为了保险,所以后续还是使用

-p(小写) 主机端口:容器端口

来实现容器端口映射到主机端口吧

二、映射所有接口地址

使用 HostPort:ContainerPort

$ docker run -it -p 5000:5000 --name HAProxy haproxy /bin/bash

三、映射到指定地址的指定端口

使用 IP:HostPort:ContainerPort

$ docker run -it -p 127.0.0.1:5000:5000 --name HAProxy haproxy /bin/bash

四、映射到指定地址的任意端口

使用 IP::ContainerPort ,本地主机会自动分配一个端口:

$ docker run -it -p 127.0.0.1::5000 --name HAProxy haproxy /bin/bash

查看映射端口配置

$ docker port containerId/containerName 5000