Docker网络

简介: Docker网络

从docker的架构和运行流程来看,Docker是一个C/S模式的架构,后端是一个松耦合架构,众多模块各司其职。


Docker运行的基本流程为:


1.用户是使用Docker Client 与 Docker Daemon建立通信,并发送请求给后者。

2.Docker Daemon 作为Docker架构中的主体部分,首先提供Docker Server的功能使其可以接受Docker Client的请求。

3.Docker Engine 执行Docker内部的一系列工作,每一项工作都是一个Job形式得存在。

4.Job得运行过程中,当需要容器镜像时,则从Docker Registry 中下载镜像,并通过镜像管理驱动Graph将下载的驱动以Graph的形式存储。

5.当需要为Docker创建网络环境时,通过网络管理驱动Network driver创建并配置Docker容器网络环境。

6.当需要限制Docker容器运行资源或执行用户指令等操作时,则通过Execdriver来完成。

7.Libcontainer是一项独立的容器管理包,Network driver以及Execdriver 都是通过Libcontainer来实现具体对容器的操作。


我们安装和运行docker后,运行ifconfig命令查看一下网络,会产生一个名为docker0的虚拟网桥:


5195faf5ce5f44d88f57cf7caf99ac2b.png


我们查看一下docker网络模式:


docker network ls


f7a28289c80f41c0990a1259059f51b9.png


docker会默认创建3大网络模式。

下面来学习一下docker network的常用命令


fc24b086929841ca9af6fd4ff80591c9.png


命令不多,就那么几个。


查看网络的命令


docker network ls


查看网络数据源的命令:


docker network inspect xxx网络名称


删除网络的命令:


docker network rm xxx网络名称


案例:

ecad1261f3f1469a930ce6c46d254e47.png


好的,上面了解过docker的一些常用命令后,接下来就来看看docker network 能干什么?


所有网络的访问,要在同一网段。如果要做docker网络管理和容器调用之间的规划、容器间的互联和通信以及端口映射,就涉及到docker network的知识了。


网络模式


70e0497fb8214dc99cda869d322582c0.png


none和container几乎不会用,主要使用前两种。


5f5b02d9ad454de39e59cda7d0b8cf7c.png


容器实例内默认网络IP的生产规则:


先启动两个ubuntu容器实例


d1fe1380ec8546c09b1b7e3bc13bee21.png


docker inspect 容器ID or 容器名字


a1536eebe04e445e969c8a734895c858.png


上面可以知道,目前的网络属于桥接网络,网关是127.0.0.1 ,u1的IP是127.0.0.2,u2的IP是127.0.0.3。


关闭u2实例,新建u3,查看ip变化


1bf56f09b8b04544863f05dcf8ae0d22.png


会发现u3的IP是127.0.0.3,这个地址不是之前u2的吗,居然变成了u3的IP地址。这说明了docker容器内部的IP是有可能发生改变的。


bridge模式

Docker 服务默认会创建一个 docker0 网桥(其上有一个 docker0 内部接口),该桥接网络的名称为docker0,它在内核层连通了其他的物理或虚拟网卡,这就将所有容器和本地主机都放到同一个物理网络。Docker 默认指定了 docker0 接口 的 IP 地址和子网掩码,让主机和容器之间可以通过网桥相互通信。


网桥docker0创建一对对等虚拟设备接口,一个叫veth,另一个叫eth0,成对匹配。


decdd362c0e94f2cb50cbcfcf2db06b7.png


查看 bridge 网络的详细信息,并通过 grep 获取名称项


docker network inspect bridge | grep name


1534a99bdd9d4cf2bbab864147aa661e.png

ifconfig | grep docker


host模式

直接使用宿主机的 IP 地址与外界进行通信,不再需要额外进行NAT 转换。他的网络就和主机的eth0(ens33)在同一个网络了。


4481fbbf93434816b29b39a5a4890430.png


问题:


 docke启动时总是遇见标题中的警告


原因:


docker启动时指定--network=host或-net=host,如果还指定了-p映射端口,那这个时候就会有此警告,


并且通过-p设置的参数将不会起到任何作用,端口号会以主机端口号为主,重复时则递增。

解决:


解决的办法就是使用docker的其他网络模式,例如--network=bridge,这样就可以解决问题,或者不指定端口映射,又或者直接无视。。O(∩_∩)O哈哈~
相关文章
|
5月前
|
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地址、网络接口列表及测试容器启动验证修复效果。
|
11月前
|
NoSQL 关系型数据库 MySQL
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
369 56
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
|
9月前
|
监控 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
241 20
|
12月前
|
安全 网络安全 数据安全/隐私保护
利用Docker的网络安全功能来保护容器化应用
通过综合运用这些 Docker 网络安全功能和策略,可以有效地保护容器化应用,降低安全风险,确保应用在安全的环境中运行。同时,随着安全威胁的不断变化,还需要持续关注和研究新的网络安全技术和方法,不断完善和强化网络安全保护措施,以适应日益复杂的安全挑战。
329 61
|
11月前
|
安全 Docker 容器
docker的默认网络模式有哪些
Docker 默认网络模式包括:1) bridge:默认模式,各容器分配独立IP,可通过名称或IP通信;2) host:容器与宿主机共享网络命名空间,性能最优但有安全风险;3) none:容器隔离无网络配置,适用于仅需本地通信的场景。
459 6
|
11月前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
1016 7
|
Docker 容器
docker swarm启动服务并连接到网络
【10月更文挑战第16天】
264 5
|
12月前
|
Docker 容器
【赵渝强老师】Docker的None网络模式
Docker容器在网络方面实现了逻辑隔离,提供了四种网络模式:bridge、container、host和none。其中,none模式下容器具有独立的网络命名空间,但不包含任何网络配置,仅能通过Local Loopback网卡(localhost或127.0.0.1)进行通信。适用于不希望容器接收任何网络流量或运行无需网络连接的特殊服务。
202 0
|
12月前
|
Docker 容器
【赵渝强老师】Docker的Host网络模式
Docker容器在网络环境中是隔离的,可通过配置不同网络模式(如bridge、container、host和none)实现容器间或与宿主机的网络通信。其中,host模式使容器与宿主机共享同一网络命名空间,提高性能但牺牲了网络隔离性。
406 0
|
12月前
|
Kubernetes Docker 容器
【赵渝强老师】Docker的Container网络模式
Docker容器在网络环境中彼此隔离,但可通过配置不同网络模式实现容器间通信。其中,container模式使容器共享同一网络命名空间,通过localhost或127.0.0.1互相访问,提高传输效率。本文介绍了container模式的特点及具体示例。
247 0

热门文章

最新文章