网络访问和端口映射

本机的容器地址如下
docker0:172.17.0.1 jumpserver:172.17.0.2 nginx:172.17.0.3

#解释:::格式位置
宿主机IP地址:宿主机端口:容器端口:协议(宿主和容器)
  • 1.
  • 2.

指定映射

docker 会自动添加一条iptables规则来实现端口映射
07.docker容器的网络访问_docker

-p hostPort:containerPort(宿主机端口:容器端口)

任意宿主机的IP地址访问80端口都可以访问到容器的80端口业务
07.docker容器的网络访问_IP_02

-p ip:hostPort:containerPort 多个容器都想使用80端口(宿主机的多个IP地址使用80端口访问业务)

我直接设置添加一个子网卡IP地址,如图所示:

ifconfig ens32:1 192.168.111.11/24 up 
  • 1.

07.docker容器的网络访问_IP_03

同端口不通IP地址创建两个容器
07.docker容器的网络访问_IP_04

查看端口状态存在10和11的80端口
07.docker容器的网络访问_IP_05

区分不通业务,进入容器修改html文件
07.docker容器的网络访问_docker容器网络访问_06

浏览器访问10和11地址的页面展示效果区分
07.docker容器的网络访问_IP_07

-p ip::containerPort(随机端口)

创建容器生成随机端口49153和49153,IP是宿主机的地址
07.docker容器的网络访问_插入图片_08

访问网址http://192.168.111.10:49154/正常
07.docker容器的网络访问_插入图片_09

查询随机端口得使用范围:因为系统内核定义的随机端口是32768-60999。所以端口是49154

sysctl -a |grep ipv4|grep rang
  • 1.

07.docker容器的网络访问_docker容器网络访问_10

-p hostPort:containerPort:udp

默认都是tcp协议,可以指定其他协议
宿主机的端口和协议udp映射到容器的端口的udp协议

-p 192.168.111.10::53:udp

使用宿主机得192.168.111.10这个ip地址的随机端口的udp协议映射到容器的53端口的协议udp

-p 81:80 –p 443:443 可以指定多个-p

随机映射
docker run -P (随机端口)

docker run -d -P nginx:latest
  • 1.

查看随机端口49153
07.docker容器的网络访问_docker_11