Docker网络、端口映射详解篇(三)

简介: 1.docker容器的网络访问1.1.为甚docker容器的地址是172网段在安装好docker后默认会添加一块网卡,和kvm虚拟化一样,都会生成一块新的网卡与docker容器进行连接

1.docker容器的网络访问

1.1.为甚docker容器的地址是172网段

在安装好docker后默认会添加一块网卡,和kvm虚拟化一样,都会生成一块新的网卡与docker容器进行连接image.png

1.1.获取docker容器的IP地址

语法格式:

docker container inspect 容器id

container可有可无

主要看最后的networks
[root@docker01 ~]# docker container  inspect 03d28d536053
"Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "7e951c3c8d83e2c3cdf4ad6f9f14a4c788ba79dec9c3adcdcd28ac9b5da3890d",
                    "EndpointID": "0ce5ffa54b0e09025c85f61699b080ff24a7e2dd1ac0e50f182ec7b51ccb21d8",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:02",
                    "DriverOpts": null
                }
第二种方法使用exec进入容器
[root@docker01 ~]# docker exec -it blissful_moore /bin/bash
root@03d28d536053:/# hostname  -I
172.17.0.2

image.png2.docker容器上网机制

首先安装好docker后会多出来一块网卡叫做docker0,与容器进行互联,运行一个镜像都会开启一个容器,一个镜像可以运行多次,每当运行后都会产生新的ip地址新的配置参数,生成ip地址后,宿主机会多一块vethxxx的网卡,vethxxx的网卡连接docker容器中的ip地址和docker网桥,docker网桥再连接宿主的docker0网卡,当docker容器需要上网时,docker0网卡就会与宿主机网卡ens33或者其他的网卡接口进行内核转发实现nat地址转换,最终由eth网卡去访问互联网,最后依次返回。

image.png如果设置内核转发参数为0,则docker容器无法上网

[root@docker01 ~]# sysctl -a 2>/dev/null | grep ipv4 | grep forward
net.ipv4.ip_forward = 1
[root@docker01 ~]# sysctl net.ipv4.ip_forward=0
[root@docker01 ~]# docker exec -it know_nginx /bin/bash
root@8c98c7834ba6:/# curl -I www.baidu.com
curl: (6) Could not resolve host: www.baidu.com
当内核参数设置为1则可以上网
[root@docker01 ~]# sysctl net.ipv4.ip_forward=1
root@8c98c7834ba6:/# curl -I www.baidu.com
HTTP/1.1 200 OK

3.docker端口映射命令格式:

docker run 选项 镜像名

参数

-p hostport:containerport //一对一映射

-p ip:hostport:containerport //指定ip映射

-p ip::containerport //映射成随机端口

-p hostport:containerport:udp //映射成udp端口

-p 81:80 -p 443:443 //指定多个

随机映射

docker run -P

3.1.一对一映射

[root@docker01 ~]# docker run -d -p 80:80 nginx

3.2.指定ip映射

常用于多个容器都想用80端口

[root@docker01 ~]# ifconfig ens33:1  192.168.81.100 up
[root@docker01 ~]# docker run -d -p 192.168.81.100:80:80 nginx
9f6a7971c3778f1c2345a50dad2b101aa61974057f51193dc791de8bf5407b95
[root@docker01 ~]# netstat -lnpt | grep 80
tcp        0      0 192.168.81.100:80       0.0.0.0:*               LISTEN      111264/docker-proxy 
tcp6       0      0 :::8080  

3.3.随机端口

随机端口默认从32768开始,内核默认指定的可以修改


[root@docker01 ~]# sysctl -a | grep ipv4|grep range

net.ipv4.ip_local_port_range = 32768 60999


扩展:nginx负载均衡与后端服务器连接时也使用随机端口,因此最多可以支持5w个并发,想增大并发量就是多增加几个ip,在dns上面设置例如华北用户走这个ip,华南用户走下一个ip,这样并发就高了,cdn也是这种原理。

[root@docker01 ~]# docker run -d -p ::80 nginx
6519668febb07a832ce1d92fe744e9d9cb4099a580ead6b8e7ced650c14eebff
[root@docker01 ~]# netstat -lnpt | grep docker
tcp        0      0 192.168.81.100:80       0.0.0.0:*               LISTEN      111264/docker-proxy 
tcp6       0      0 :::8080                 :::*                    LISTEN      100300/docker-proxy 
tcp6       0      0 :::32768                :::*                    LISTEN      113247/docker-proxy 
```![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20200901104341587.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDk1MzY1OA==,size_16,color_FFFFFF,t_70#pic_center)
目录
相关文章
|
8月前
|
Docker 容器
Docker网关冲突导致容器启动网络异常解决方案
当执行`docker-compose up`命令时,服务器网络可能因Docker创建新网桥导致IP段冲突而中断。原因是Docker默认的docker0网卡(172.17.0.1/16)与宿主机网络地址段重叠,引发路由异常。解决方法为修改docker0地址段,通过配置`/etc/docker/daemon.json`调整为非冲突段(如192.168.200.1/24),并重启服务。同时,在`docker-compose.yml`中指定网络模式为`bridge`,最后通过检查docker0地址、网络接口列表及测试容器启动验证修复效果。
1362 39
|
NoSQL 关系型数据库 MySQL
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
468 56
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
|
10月前
|
域名解析 API PHP
VM虚拟机全版本网盘+免费本地网络穿透端口映射实时同步动态家庭IP教程
本文介绍了如何通过网络穿透技术让公网直接访问家庭电脑,充分发挥本地硬件性能。相比第三方服务受限于转发带宽,此方法利用自家宽带实现更高效率。文章详细讲解了端口映射教程,包括不同网络环境(仅光猫、光猫+路由器)下的设置步骤,并提供实时同步动态IP的两种方案:自建服务器或使用三方API接口。最后附上VM虚拟机全版本下载链接,便于用户在穿透后将服务运行于虚拟环境中,提升安全性与适用性。
621 7
|
12月前
|
监控 Linux PHP
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
448 20
|
安全 网络协议 网络安全
【Azure APIM】APIM服务配置网络之后出现3443端口不通,Management Endpoint不健康状态
如果没有关联的网络安全组,则阻止所有网络流量通过子网和网络接口。
289 30
|
安全 网络安全 数据安全/隐私保护
利用Docker的网络安全功能来保护容器化应用
通过综合运用这些 Docker 网络安全功能和策略,可以有效地保护容器化应用,降低安全风险,确保应用在安全的环境中运行。同时,随着安全威胁的不断变化,还需要持续关注和研究新的网络安全技术和方法,不断完善和强化网络安全保护措施,以适应日益复杂的安全挑战。
439 61
|
监控 安全 网络协议
计算机端口:网络通信的桥梁
计算机端口是网络通信的逻辑通道,支持数据传输和服务识别。本文介绍端口定义、分类(知名、注册、动态端口)、作用及管理方法,涵盖常用知名端口如HTTP(80)、HTTPS(443)等,并强调端口安全配置的重要性,帮助读者全面理解这一关键组件。
1219 6
|
数据建模 应用服务中间件 nginx
docker替换宿主与容器的映射端口和文件路径
通过正确配置 Docker 的端口和文件路径映射,可以有效地管理容器化应用程序,确保其高效运行和数据持久性。在生产环境中,动态替换映射配置有助于灵活应对各种需求变化。以上方法和步骤提供了一种可靠且易于操作的方案,帮助您轻松管理 Docker 容器的端口和路径映射。
1048 3
|
安全 Docker 容器
docker的默认网络模式有哪些
Docker 默认网络模式包括:1) bridge:默认模式,各容器分配独立IP,可通过名称或IP通信;2) host:容器与宿主机共享网络命名空间,性能最优但有安全风险;3) none:容器隔离无网络配置,适用于仅需本地通信的场景。
588 6
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
1275 7

热门文章

最新文章