docker网络访问和端口映射
文章目录
- docker网络访问和端口映射
- 1.docker容器网络
- 1.1.创建一个centos7的容器
- 1.2.docker网络原理图
- 2.端口映射
- 2.1.创建一个新的IP
- 2.2.多个IP端口映射
- 2.3.随机端口命令
1.docker容器网络
指定映射(docker 会 自动添加一条iptables规则来实现端口映射)
查看容器地址方法一
1.先启动ngninx
[root@localhost ~]#docker run -d -p 80:80 nginx
2.获取一下容器ID
[root@localhost ~]# docker ps -a -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2ee29832f5a8 nginx "/docker-entrypoint.…" 13 minutes ago Up 13 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp angry_ptolemy
3.查看容器的IP地址
[root@localhost ~]#docker container inspect 2ee29832f5a8
可以通过登录容器的方式查看
方法二
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
eb44dfc7d112 centos "tail -f /etc/hosts" 7 minutes ago Up 7 minutes bold_swirles
cfbe1c462bf3 nginx "/docker-entrypoint.…" 8 minutes ago Up 8 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp eloquent_mirzakhani
[root@localhost ~]# docker exec -it cfbe1c462bf3 bash
root@cfbe1c462bf3:/# hostname -I
172.17.0.2
1.1.创建一个centos7的容器
创建一个centos容器 加tail -f /etc/hosts可以保持容器不会挡掉,可以吭住。
[root@localhost ~]#docker run -it centos tail -f /etc/hosts
使用交互的方式进入容器
[root@localhost ~]#dokcer exec -it a2d38c870ca7 /bin/bash
可以尝试centos系统是可以上网的,我们来curl一下百度。
1.2.docker网络原理图
后面每启动一个容器都会增加veth开头的网卡,veth下面对接容器的地址,veth网卡进行上联docker0的网卡,然后通过内核的转发实现容器的功能。
2.端口映射
把容器的端口映射到物理机本身的端口
把本机的81端口映射到容器nginx的80端口
[root@localhost ~]# docker run -d -p 81:80 nginx
49db108fc63ac4132e3c02f254c119c72006558369befeb3c9d0fbed2296d196
可以看到添加端口映射后新增加的防火墙规则
2.1.创建一个新的IP
[root@localhost ~]# ifconfig ens33:1 192.168.40.10/24 up
2.2.多个IP端口映射
在原来IP地址192.168.40.5和10分别启动一下80端口
如果多个容器都想使用80端口就可以使用这样的方式进行创建一个ip
[root@localhost ~]#docker run -d -p 192.168.40.5:80:80 nginx:latest
[root@localhost ~]#docker run -d -p 192.168.40.10:80:80 nginx:latest
2.3.随机端口命令
[root@localhost ~]# docker run -d -P
-P大写的P创建容器会出现随机端口
[root@localhost ~]# docker run -d -P
-P大写的P创建容器会出现随机端口
随机端口
随机端口默认从32768开始,内核默认指定的可以修改
[root@localhost ~]# sysctl -a | grep ipv4|grep range
net.ipv4.ip_local_port_range = 32768 60999
扩展:nginx负载均衡与后端服务器连接时也使用随机端口,因此最多可以支持5w个并发,想增大并发量就是多增加几个ip,在dns上面设置例如华北用户走这个ip,华南用户走下一个ip,这样并发就高了,cdn也是这种原理。
扩展:nginx负载均衡与后端服务器连接时也使用随机端口,因此最多可以支持5w个并发,想增大并发量就是多增加几个ip,在dns上面设置例如华北用户走这个ip,华南用户走下一个ip,这样并发就高了,cdn也是这种原理。