本系列主要分为以下六大部分,正在更新中,尽请期待!
🚩点击关注本专栏
提示:已经更新的或正在更新的文章前面打勾了哈!
当你开始大规模使用Docker时,你会发现需要了解很多关于网络的知识。Docker作为目前最火的轻量级容器技术,有很多令人称道的功能,如Docker的镜像管理。然而,Docker同样有着很多不完善的地方,网络方面就是Docker比较薄弱的部分。因此,我们有必要深入了解Docker的网络知识,以满足更高的网络需求。
Docker 默认启动的时候,会为我们创建三个网络:
我们可以使用命令来列出docker当前的网络,如下:
docker network ls
Docker能干嘛?
首先我们要知道Docker 容器内部的 IP 是有可能变化的。
通过Docker网络我们可以实现:
docker network --help
docker network ls
docker network inspect xxx
docker network create xxx
docker network rm xxx
Docker网络模式主要有四种:
接下来我们对这四种模式分别进行学习!
Docker 使用 Linux 桥接,在宿主机虚拟一个 Docker 容器网桥( docker0 ),Docker启动一个容器时会根据 Docker 网桥的网段分配给容器一个 IP 地址,称为 Container-IP
,同时 Docker 网桥是每个容器的默认网关。
因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的 Container-IP
直接通信。
docker run
的时候,没有指定 network
的话默认使用的网桥模式就是 bridge
,使用的就是 docker0
。
在宿主机使用 ifconfig
命令就可以看到 :
docker0
和自己 create
的 network
的 eth0
,eth1
,eth2
……分别代表网卡一
,网卡二
,网卡三
……;lo
代表127.0.0.1
,即 localhost
;inet addr
用来表示网卡的 IP 地址;网桥 docker0 创建一对对等虚拟设备接口一个叫 veth
,另一个叫 eth0
,成对匹配。
整个宿主机的网桥模式都是 docker0
,类似一个交换机有一堆接口,每个接口叫 veth,在本地主机和容器内分别创建一个虚拟接口,并让他们彼此联通(这样一对接口叫 veth pair
)。
eth0
。docker0
上面的每个 veth
匹配某个容器实例内部的 eth0
,两两配对,一一匹配。综上所述,将宿主机上的所有容器都连接到这个内部网络上,两个容器在同一个网络下,会从这个网关下各自拿到分配的 ip ,此时两个容器的网络是互通的。
切换到bridge
模式使用下列命令:
docker run --network bridge xxx
不过docker默认就是这个模式是不需要切换的。
容器不会获得一个独立的 Network Namespace
,而是和宿主机共用一个 NetWork Namespace
,容器将不会虚拟出自己的网卡,而是使用宿主机的 IP 和端口。
切换到host
模式使用下列命令:
docker run --network host xxx
禁用网络功能,只有 lo
标识(就是 127.0.0.1 表示本地回环)。
切换到none
模式使用下列命令:
docker run --network none xxx
新建的容器和已经存在的一个容器共享一个网络 ip 配置而不是和宿主机共享。
新创建的容器不会创建自己的网卡,配置自己的 IP,而是和一个指定的容器共享 IP、端口范围等。
同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。
切换到container
模式使用下列命令:
docker run --network 容器名称|容器ID xxx
建议使用自定义的网桥来控制哪些容器可以相互通信,还可以自动DNS解析容器名称到IP地址。Docker提供了创建这些网络的默认网络驱动程序
容器 IP 变动时候可以通过服务名直接网络通信而不受影响。(类似Eureka,通过服务名直接互相通信,而不是写死IP地址)。
自定义网络默认使用的是桥接网络 bridge
。
自定义网络本身就维护好了主机名和 ip 的对应关系(ip 和域名都能通),常用。
使用时自定义网络时直接创建网络就行,如下:
docker network create demo
看看本专栏文章有哪些吧!
本系列文章目录:
🚩点击关注本专栏
可以看出来本系列文章将会带你从-1到1的学习云原生的,一起加油吧!
本篇阐述了Docker网络相关知识,下一篇是 Docker-compose 容器编排,欢迎关注本专栏!
参考:https://blog.csdn.net/meltsnow/article/details/94490994
上一篇:计算机毕业设计Java家校沟通程序(源码+系统+mysql数据库+lw文档)
下一篇:K - Kingdom‘s Power 贪心,E-奇环_牛客练习赛106 二分图 鸽笼原理,F-座位_概率期望,G-交换_dp