docker网络访问和端口映射

docker网络访问和端口映射

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6jpgWrWP-1683532630391)(D:\linux笔记总结\docker\docker网络访问.assets\image-20230327220036776.png)]

可以通过登录容器的方式查看

方法二

[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一下百度。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i8RFCflf-1683532630392)(D:\linux笔记总结\docker\docker网络访问.assets\image-20230327223109377.png)]

1.2.docker网络原理图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kvD6Z0SQ-1683532630393)(D:\linux笔记总结\docker\docker网络访问.assets\image-20230327222139184.png)]启动docker之后会自动生成一个docker0的网卡。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sWuM4flV-1683532630393)(D:\linux笔记总结\docker\docker网络访问.assets\image-20230327222218733.png)]

后面每启动一个容器都会增加veth开头的网卡,veth下面对接容器的地址,veth网卡进行上联docker0的网卡,然后通过内核的转发实现容器的功能。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o2DwWEpm-1683532630394)(D:\linux笔记总结\docker\docker网络访问.assets\image-20230327222337954.png)]

2.端口映射

把容器的端口映射到物理机本身的端口

把本机的81端口映射到容器nginx的80端口

[root@localhost ~]# docker run -d -p 81:80 nginx
49db108fc63ac4132e3c02f254c119c72006558369befeb3c9d0fbed2296d196

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xIpcZYgG-1683532630394)(D:\linux笔记总结\docker\docker网络访问.assets\image-20230327225330607.png)]

可以看到添加端口映射后新增加的防火墙规则

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lGjGJsrW-1683532630395)(D:\linux笔记总结\docker\docker网络访问.assets\image-20230410151908331.png)]

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4J29kR8d-1683532630395)(D:\linux笔记总结\docker\docker网络访问.assets\image-20230410170758104.png)]

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也是这种原理。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值