0


『 云原生·Docker』Docker网络

系列文章目录

 本系列主要分为以下六大部分,正在更新中,尽请期待!
  • 『 云原生·生之门』
  • 『 云原生·前置知识』
  • 『 云原生·Docker』
  • 『 云原生·Kubernetes』
  • 『 云原生·KubeSphere』
  • 『 云原生·DevOps』

🚩点击关注本专栏


提示:已经更新的或正在更新的文章前面打勾了哈!

文章目录


前言

当你开始大规模使用Docker时,你会发现需要了解很多关于网络的知识。Docker作为目前最火的轻量级容器技术,有很多令人称道的功能,如Docker的镜像管理。然而,Docker同样有着很多不完善的地方,网络方面就是Docker比较薄弱的部分。因此,我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

一、初识Docker网络

Docker 默认启动的时候,会为我们创建三个网络:

  • bridge(创建容器默认连接到此网络)
  • none
  • host

我们可以使用命令来列出docker当前的网络,如下:

docker network ls

Docker能干嘛?

首先我们要知道Docker 容器内部的 IP 是有可能变化的。

通过Docker网络我们可以实现:

  1. 容器间的互联、通信以及端口映射。
  2. 可以通过服务名直接通信,而不受容器 IP 变化的影响。

二、常用基本命令

1.Docker 网络的帮助命令

  • 命令:
docker network --help

2.查看网络

  • 命令:
docker network ls

3.查看网络源数据

  • 命令:
docker network inspect xxx

4.创建网络

  • 命令:
docker network create xxx

5.删除网络

  • 命令:
docker network rm xxx

三、网络模式

Docker网络模式主要有四种:

  1. bridge 模式(默认)
  2. host模式
  3. none模式
  4. container模式

接下来我们对这四种模式分别进行学习!

1.bridge 模式

Docker 使用 Linux 桥接,在宿主机虚拟一个 Docker 容器网桥( docker0 ),Docker启动一个容器时会根据 Docker 网桥的网段分配给容器一个 IP 地址,称为

Container-IP

,同时 Docker 网桥是每个容器的默认网关。

因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的

Container-IP

直接通信。

docker run

的时候,没有指定

network

的话默认使用的网桥模式就是

bridge

,使用的就是

docker0

在宿主机使用

ifconfig

命令就可以看到 :

  • docker0 和自己 createnetworketh0eth1eth2……分别代表网卡一网卡二网卡三……;
  • lo 代表127.0.0.1,即 localhost
  • inet addr 用来表示网卡的 IP 地址;

网桥 docker0 创建一对对等虚拟设备接口一个叫

veth

,另一个叫

eth0

,成对匹配。

整个宿主机的网桥模式都是

docker0

,类似一个交换机有一堆接口,每个接口叫 veth,在本地主机和容器内分别创建一个虚拟接口,并让他们彼此联通(这样一对接口叫

veth pair

)。

  1. 每个容器实例内部也有一块网卡,每个接口叫 eth0
  2. docker0 上面的每个 veth 匹配某个容器实例内部的 eth0 ,两两配对,一一匹配。

综上所述,将宿主机上的所有容器都连接到这个内部网络上,两个容器在同一个网络下,会从这个网关下各自拿到分配的 ip ,此时两个容器的网络是互通的。

切换到

bridge

模式使用下列命令:

docker run --network bridge xxx

不过docker默认就是这个模式是不需要切换的。

2.host模式

容器不会获得一个独立的

Network Namespace

,而是和宿主机共用一个

NetWork Namespace

,容器将不会虚拟出自己的网卡,而是使用宿主机的 IP 和端口

切换到

host

模式使用下列命令:

docker run --networkhost xxx

3.none模式

禁用网络功能,只有

lo

标识(就是 127.0.0.1 表示本地回环)。

切换到

none

模式使用下列命令:

docker run --network none xxx

4.container模式

新建的容器和已经存在的一个容器共享一个网络 ip 配置而不是和宿主机共享。

新创建的容器不会创建自己的网卡,配置自己的 IP,而是和一个指定的容器共享 IP、端口范围等。

同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。

切换到

container

模式使用下列命令:

docker run --network 容器名称|容器ID xxx

四、自定义网络

建议使用自定义的网桥来控制哪些容器可以相互通信,还可以自动DNS解析容器名称到IP地址。Docker提供了创建这些网络的默认网络驱动程序

容器 IP 变动时候可以通过服务名直接网络通信而不受影响。(类似Eureka,通过服务名直接互相通信,而不是写死IP地址)。

自定义网络默认使用的是**桥接网络

bridge

** 。

自定义网络本身就维护好了主机名和 ip 的对应关系(ip 和域名都能通),常用。

使用时自定义网络时直接创建网络就行,如下:

docker network create demo
看看本专栏文章有哪些吧!

本系列文章目录:

  • 『 云原生·生之门』
  • 『 云原生·前置知识』
  • 『 云原生·Docker』
  • 『 云原生·Kubernetes』
  • 『 云原生·KubeSphere』
  • 『 云原生·DevOps』

🚩点击关注本专栏

可以看出来本系列文章将会带你从-1到1的学习云原生的,一起加油吧!

总结

本篇阐述了Docker网络相关知识,下一篇是 Docker-compose 容器编排,欢迎关注本专栏!

参考:https://blog.csdn.net/meltsnow/article/details/94490994

标签: docker 云原生 网络

本文转载自: https://blog.csdn.net/apple_51673523/article/details/128125730
版权归原作者 abcccccccccccccccode 所有, 如有侵权,请联系我们删除。

“『 云原生·Docker』Docker网络”的评论:

还没有评论