目录
【3】多IP的使用场景,将多个容器同时将宿主机的80端口映射到多个容器的80端口
【1】宿主机80端口映射到容器80端口
[root@docker-01 ~]# docker run -dit -p 80:80 --name nginx-01 nginx:latest
bdf6cd33afd0ca65857a7a437efa9a1f6a879293471dd461f17542bb204a526e
[root@docker-01 ~]# iptables -t nat -L -n -v
......
......
Chain DOCKER (2 references)
pkts bytes target prot opt in out source destination
0 0 RETURN all -- docker0 * 0.0.0.0/0 0.0.0.0/0
0 0 DNAT tcp -- !docker0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 to:172.17.0.2:80
[root@docker-01 ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2424/docker-proxy
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 874/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1510/master
tcp6 0 0 :::80 :::* LISTEN 2429/docker-proxy
tcp6 0 0 :::22 :::* LISTEN 874/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1510/master
验证
【2】指定监听宿主机的IP+端口,映射到容器的80端口
[root@docker-01 ~]# docker run -dit -p 10.0.0.51:90:80 --name nginx-02 nginx:latest
ae667e592e4455633adc690a29542d1c748bb5dd2ecc77cddc7032a48a238832
验证
那么第一个和第二个有什么区别,如果我们有多块网卡
[root@docker-01 ~]# docker inspect nginx-01 | grep Id
"Id": "bdf6cd33afd0ca65857a7a437efa9a1f6a879293471dd461f17542bb204a526e",
[root@docker-01 ~]# docker inspect nginx-02 | grep Id
"Id": "ae667e592e4455633adc690a29542d1c748bb5dd2ecc77cddc7032a48a238832",
第一种生成的配置:没有指定IP绑定,是不是宿主机存在的IP都可以访问
那么我们验证使用其他IP访问,也是说没有指定IP,宿主机中的任意IP都可以访问