『 云原生·Docker』Docker网络

您所在的位置:网站首页 化学电源的发展前景 『 云原生·Docker』Docker网络

『 云原生·Docker』Docker网络

2023-05-26 11:16| 来源: 网络整理| 查看: 265

系列文章目录

本系列主要分为以下六大部分,正在更新中,尽请期待!

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

🚩点击关注本专栏

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

文章目录 系列文章目录前言一、初识Docker网络二、常用基本命令1.Docker 网络的帮助命令2.查看网络3.查看网络源数据4.创建网络5.删除网络 三、网络模式1.bridge 模式2.host模式3.none模式4.container模式 四、自定义网络总结

前言

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

一、初识Docker网络

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

bridge(创建容器默认连接到此网络)nonehost

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

docker network ls

Docker能干嘛?

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

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

容器间的互联、通信以及端口映射。可以通过服务名直接通信,而不受容器 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网络模式主要有四种:

bridge 模式(默认)host模式none模式container模式

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

1.bridge 模式

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默认就是这个模式是不需要切换的。

2.host模式

容器不会获得一个独立的 Network Namespace,而是和宿主机共用一个 NetWork Namespace ,容器将不会虚拟出自己的网卡,而是使用宿主机的 IP 和端口。

切换到host模式使用下列命令:

docker run --network host 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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3