IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Docker-----网络、自定义网络、容器通信、跨主机容器通信 -> 正文阅读

[系统运维]Docker-----网络、自定义网络、容器通信、跨主机容器通信

一.Docker网络

实验环境:
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
docker安装后会自动创建3种网络:bridge、host、none
在这里插入图片描述
iptables -nL ##
在这里插入图片描述

1.桥接网络

在这里插入图片描述

安装桥接网络
docker安装时会创建一个名为 docker0 的Linux bridge,新建的容器会自动桥接到这个接口。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

运行一个容器查看桥接

在这里插入图片描述

删除掉容器后,桥接消失

在这里插入图片描述

2.host网络模式

在这里插入图片描述

需要指定network host
在这里插入图片描述
curl 172.25.28.1

查看端口,可以发现docker运行的镜像nginx占用的是80端口
在这里插入图片描述
再运行一个容器demo2,ps 查看正在运行的容器只有demo,原因是:–network host会占用虚拟机的80端口,但是demo的80端口挤掉了demo2
在这里插入图片描述
在这里插入图片描述

查看日志:docker logs demo2,可以发现原因
在这里插入图片描述

3.none模式

none模式是指禁用网络功能,只有lo接口,在容器创建时使用
–network=none指定
在这里插入图片描述

二.自定义网络

自定义网络模式,docker提供了三种自定义网络驱动
bridge
overlay
macvlan

bridge驱动类似默认的bridge网络模式,但增加了一些新的功能,overlay和macvlan是用于创建跨主机网络。

docker的ip不固定,哪个容器先起来,哪个先用前面的ip 默认情况不是用容器名称,ping ip
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
ping ip 可以
在这里插入图片描述

ping 名称不通
在这里插入图片描述

1.创建自定义网络

在这里插入图片描述
自定义mynet1网桥
在这里插入图片描述
在这里插入图片描述

运行容器,使其都连接在mynet1的自定义网桥上
在这里插入图片描述
在这里插入图片描述

测试:
ping demo可以直接成功,说明可以提供解析

在这里插入图片描述
在这里插入图片描述

2.自定义网络

在创建时指定参数:--subnet 、--gateway

之前已经创建了mynet1网桥,subnet 为172.20.0.0/24,gateway为172.20.0.1,此处新建mynet2网桥时,subnet 和 gateway不能与mynet1重复!!
在这里插入图片描述

3.手动指定ip

4.双网卡实现不同网段间的容器通信

桥接到不同网桥上的容器,彼此是不通信的。
docker在设计上就是要隔离不同network的。
那么如何使两个不同网桥的容器通信呢:
使用 docker network connect命令为vm1添加一块my_net2 的网卡。
在这里插入图片描述
运行第一个容器搭mynet1网络,运行第二个容器搭mynet2网络
发现这两个容器ping不通!!

在这里插入图片描述
第二个容器的id为2c****,使mynet1 连接第二个容器,attach 第二个容器的id,再次ping 第一个容器,发现可以ping通
在这里插入图片描述
可以看到mynet1,mynet2的ip都出现在了里面!说明通信成功!
在这里插入图片描述

三.Docker容器通信

1.使用容器名称通信

容器之间除了使用ip通信外,还可以使用容器名称通信。
dns解析功能必须在自定义网络中使用。
启动容器时使用 --name 参数指定容器名称。
在容器创建时使用–network=container:vm1指定。(vm1指定的是运行的容器名)
docker demo 必须是运行的!!!

Joined容器一种较为特别的网络模式。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

处于这个模式下的 Docker 容器会共享一个网络栈,这样两个容器之间可以使用localhost高效快速通信。

2.–link可以用来链接2个容器

–link 可以用来链接2个容器。
–link的格式: –link **:alias

需要删除之前的demo

ping名字demo成功!
在这里插入图片描述
Demo和web的ip:172.17.0.2, web是容器内新开启的,和demo共用同一个ip
Busybox的ip:172.17.0.3

在这里插入图片描述
域名是动态变化的:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以发现:demo由原来的172.17.0.3 变为 172.17.0.4

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.容器如何访问外网

容器如何访问外网是通过iptables的SNAT实现的
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述在这里插入图片描述
直接可以访问外网(真实主机开启了地址伪装功能)
在这里插入图片描述

4.外网访问容器

外网访问容器用到了docker-proxy和iptables DNAT

宿主机访问本机容器使用的是iptables DNAT;外部主机访问容器或容器之间的访问是docker-proxy实现
在这里插入图片描述
端口映射:-p 选项指定映射端口
在这里插入图片描述

查看目的地转换规则,第六条链

在这里插入图片描述查看端口
在这里插入图片描述

删除第6条连: iptables -t nat -D DOCKER 6 , 查看没有

在这里插入图片描述

在这里插入图片描述

查看端口有docker-proxy,此时只有 docker-proxy

在这里插入图片描述

重新加入后查看
在这里插入图片描述
在这里插入图片描述

四.跨主机Docker容器通信

跨主机容器网络

  • 跨主机网络解决方案:
    docker原生的overlay和macvlan
    第三方的flannel、weave、calico
  • 众多网络方案是如何与docker集成在一起的
    libnetwork docker容器网络库
    CNM (Container Network Model)这个模型对容器网络进行了抽象
  • CNM分三类组件
    Sandbox:容器网络栈,包含容器接口、dns、路由表。(namespace)
    Endpoint:作用是将sandbox接入network (veth pair)
    Network:包含一组endpoint,同一network的endpoint可以通信。

在这里插入图片描述

1.跨主机同网段容器通信

server1 打开混杂模式
在这里插入图片描述
server2 打开混杂模式
在这里插入图片描述
在这里插入图片描述
在两台docker主机上各创建macvlan1网络:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
不同主机的容器可以ping 通
容器的接口直接与主机网卡连接,无需NAT或端口映射。
在这里插入图片描述

2.跨主机的不同网段的容器通信

macvlan会独占主机网卡,但可以使用vlan子接口实现多macvlan网络
vlan可以将物理二层网络划分为4094个逻辑网络,彼此隔离,vlan id取值为1~4094。

server1和server2新加一块网卡eth1
在这里插入图片描述

在这里插入图片描述
编写eth1的网卡文件(server1和server2)
在这里插入图片描述
重新激活网卡:ifup eth1
ip link set up eth1启用网卡
eth1网卡的混杂模式打开(server1和server2)
在这里插入图片描述
在这里插入图片描述
删除之前的macvlan1和macvlan2
在这里插入图片描述
server1和server2创建macvlan2,注意网段需要改变一下和前面eth0不一样172.21.0.*
在这里插入图片描述

在这里插入图片描述

创建容器并运行,注意网段需要改变一下和前面eth0不一样172.21.0.*
在这里插入图片描述
在server2也需要创建容器并运行:
在这里插入图片描述
在这里插入图片描述

demo的信息中会自动生成和 macvlan1同网段172.20.*.*的ip:172.20.0.2
在这里插入图片描述
不同网段 172.21.0.10不能通信,但是生成的Ip172.20.0.2可以访问
在这里插入图片描述

3.docker network子命令

connect		连接容器到指定网络
create			创建网络
disconnect	断开容器与指定网络的连接
inspect		显示指定网络的详细信息
ls			显示所有网络
rm			删除网络
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-07-23 11:14:16  更:2021-07-23 11:15:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 16:50:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码