Docker 网络模式 -day05

docker 启动时候还会有,名为docker0的虚拟网桥,注意网址为 127.0.0.1

[root@iZuf6hxabqikytnrumsi4gZ ~]# ifconfig
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255inet6 fe80::42:7fff:fe81:d287  prefixlen 64  scopeid 0x20<link>ether 02:42:7f:81:d2:87  txqueuelen 0  (Ethernet)RX packets 135  bytes 9419 (9.1 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 213  bytes 15282 (14.9 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 查看docker的 网络命令

docker network COMMAND

如下: 

docker network ls    查看网络
docker network create 网络名    创建网络
docker network connect 网络名    为容器连接到网络
docker network disconnect 网络名    断开容器的网络
docker network inspect 网络名    查看网络源数据
docker network rm 网络名字    删除网络
docker network prune    删除所有无用的网络
 

一、Docker网络模式

Docker有四种网络模式:

  •         bridge模式:默认设置,容器和宿主机都配置在一个网络空间中。
  •         none模式:不配置任何网络参数,需要手动配置。
  •         host模式:容器和宿主机共享一个网络命名空间,不配置独立的网络空间。        
  •         container模式:将容器设置为网络命名空间,使容器和宿主机有相同的IP地址和端口号。

二、 bridge:网桥模式 

查看容器ip,可以看到容器内的 IPAddress 与上面 docker0在同一个网段。

[root@iZuf6hxabqikytnrumsi4gZ ~]# docker ps 
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS          PORTS                                                  NAMES
462ff8d8719e   b66e5037b732   "bash"                   3 minutes ago   Up 31 seconds   80/tcp                                                 centosjava8
a34aff536643   redis:6.2.6    "docker-entrypoint.s…"   13 days ago     Up 3 hours      0.0.0.0:6379->6379/tcp, :::6379->6379/tcp              redis6.2.6
2a384f369e0b   mysql:5.7      "docker-entrypoint.s…"   2 weeks ago     Up 3 hours      0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql5.72-查看最后二十行关于网络的配置
[root@iZuf6hxabqikytnrumsi4gZ ~]# docker inspect centosjava8|tail -n 20"Networks": {"bridge": {"IPAMConfig": null,"Links": null,"Aliases": null,"NetworkID": "a09227a0c60fe5b8afd1082d3ba2d5d7425d0f7aeafd861caf1d8103886f34c7","EndpointID": "9a3b00d21d96ec4e1bf34549b77429ecd835e0f69db4d92bc27e03354f75239b","Gateway": "172.17.0.1","IPAddress": "172.17.0.4","IPPrefixLen": 16,"IPv6Gateway": "","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"MacAddress": "02:42:ac:11:00:04","DriverOpts": null}}}}
]

 网桥模式通信示意图:

1、整个宿主机的网桥模式都是docker0,类似一个交换机有一堆接口,每个接口叫veth,在本地主机和容器内分别创建一个虚拟接口,并让他们彼比联通(这样一对接口叫veth pair) :
2、 每个容器实例内部也有一块网卡,每个接口叫eth0;
3、docker0上面的每个veth匹配某个容器实例内部的eth0,两两配对。

所以:网桥模式下:docker0 相当于交换机一样功能,让各个容器通信

 三、主机模式

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

 启动一个本地的镜像:以host 方式

docker run -it  --network=host --name centosjava8 b66e5037b732 bash

 容器共享宿主机ip,端口也是默认的。

1-查看容器
[root@iZuf6hxabqikytnrumsi4gZ ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS                                                  NAMES
74e40d517ff9   b66e5037b732   "/bin/sh -c /bin/bash"   3 minutes ago   Up 3 minutes                                                          kind_kepler
a34aff536643   redis:6.2.6    "docker-entrypoint.s…"   2 weeks ago     Up 7 hours     0.0.0.0:6379->6379/tcp, :::6379->6379/tcp              redis6.2.6
2a384f369e0b   mysql:5.7      "docker-entrypoint.s…"   2 weeks ago     Up 7 hours     0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql5.72-查看容器信息 看到host方式启动。与宿主机共用一份,ip网关都是空的
[root@iZuf6hxabqikytnrumsi4gZ ~]# docker inspect 74e40d517ff9|tail -n 20"Networks": {"host": {"IPAMConfig": null,"Links": null,"Aliases": null,"NetworkID": "f41a3dd68f79020a979539af616a2fadbb7cb95f18597a1611d4ef19198d9039","EndpointID": "331746e74ee6e7a53ffd2d32aa3d00ab15e53ff2037ec3b0584a2c1007e98247","Gateway": "","IPAddress": "","IPPrefixLen": 0,"IPv6Gateway": "","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"MacAddress": "","DriverOpts": null}}}}
]
[root@iZuf6hxabqikytnrumsi4gZ ~]# 

 四、none网络模式

在none模式下,并不为Docker容器进行任何网络配置。 也就是说,这个Docker容器没有网卡、IP、路由等信息,只有一个lo需要我们自己为Docker容器添加网卡、配置IP等。

五、 container网络模式 

新建的容器和已经存在的一个容器共享一个网络ip配置而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。

示例如下:

借用容器 centosjava8 的配置,共用一个网桥,如果关闭centosjava8 容器那么生成的centosjava81也就没有ip

docker run -it --network container:centosjava8  --name centosjava81 b66e5037b732 bash

 如图:

六、自定义网络 

 docker多个容器之间的集群规划要使用服务名,因为ip是会变动,使用自定义网络模式能够使用服务名进行通信


1-创建自定义网络
[root@iZuf6hxabqikytnrumsi4gZ ~]# docker network create mynetwork
f43d61b56f9e124f6ea6cd80d627d15990c7a9316974be773c33d7d2327312122-查看自己创建的网络 mynetwork
[root@iZuf6hxabqikytnrumsi4gZ ~]# docker network ls
NETWORK ID     NAME        DRIVER    SCOPE
e8026a20994a   bridge      bridge    local
f41a3dd68f79   host        host      local
f43d61b56f9e   mynetwork   bridge    local
9eae36819684   none        null      local
[root@iZuf6hxabqikytnrumsi4gZ ~]# 

 后台启动2个容器:

docker run -it  --network mynetwork --name t1 centosjava8:1.0docker run -it  --network mynetwork --name t2 centosjava8:1.0

 过程如下

1-查看镜像
[root@syf ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
centosjava8   1.0       b66e5037b732   8 days ago      1.27GB
redis         6.2.6     7614ae9453d1   24 months ago   113MB
mysql         5.7       c20987f18b13   24 months ago   448MB[root@syf ~]# docker run -it  --network mynetwork --name t1 centosjava8:1.0[root@syf ~]# docker run -it  --network mynetwork --name t2 centosjava8:1.02-查看容器
[root@syf ~]# docker ps
CONTAINER ID   IMAGE             COMMAND                  CREATED              STATUS              PORTS                                                  NAMES
9bc9c68b9582   centosjava8:1.0   "/bin/sh -c /bin/bash"   27 seconds ago       Up 26 seconds       80/tcp                                                 t2
e50315d22041   centosjava8:1.0   "/bin/sh -c /bin/bash"   About a minute ago   Up About a minute   80/tcp                                                 t1
a34aff536643   redis:6.2.6       "docker-entrypoint.s…"   2 weeks ago          Up 6 minutes        0.0.0.0:6379->6379/tcp, :::6379->6379/tcp              redis6.2.6
2a384f369e0b   mysql:5.7  3-查看 t1、t2 2个容器都是在一个网段上
[root@syf ~]# docker inspect t1|tail -n 20"Networks": {"bridge": {"IPAMConfig": null,"Links": null,"Aliases": null,"NetworkID": "de322bc41064e1f7314af8f991d7b984a975c890ebbcf505598f2a24bea7e52e","EndpointID": "5ab83e65694b064a8a7237a5e53fe28c6170502de8a10af0af2e8a06583057f0","Gateway": "172.17.0.1","IPAddress": "172.17.0.4","IPPrefixLen": 16,"IPv6Gateway": "","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"MacAddress": "02:42:ac:11:00:04","DriverOpts": null}}}}
]
[root@syf ~]# docker inspect t2|tail -n 20"Networks": {"bridge": {"IPAMConfig": null,"Links": null,"Aliases": null,"NetworkID": "de322bc41064e1f7314af8f991d7b984a975c890ebbcf505598f2a24bea7e52e","EndpointID": "0c281bffcded7267cd9ce428ecdc9be6fb6f375b35d02f1e62080a5ac28f3ee1","Gateway": "172.17.0.1","IPAddress": "172.17.0.5","IPPrefixLen": 16,"IPv6Gateway": "","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"MacAddress": "02:42:ac:11:00:05","DriverOpts": null}}}}
]

测试

1-进入t1容器 ping t2
[root@syf ~]# docker exec -it t1 bash2- 用服务名也可以ping通
[root@9bc9c68b9582 local]# ping t2 -c 3
PING 172.17.0.5 (172.17.0.5) 56(84) bytes of data.
64 bytes from 172.17.0.5: icmp_seq=1 ttl=64 time=0.104 ms
64 bytes from 172.17.0.5: icmp_seq=2 ttl=64 time=0.082 ms
64 bytes from 172.17.0.5: icmp_seq=3 ttl=64 time=0.067 ms

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/235677.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于k6和python进行自动化性能测试

摘要&#xff1a;在性能测试中&#xff0c;达到相应的性能指标对于一个软件来说十分重要&#xff0c;在本文中&#xff0c;将介绍一种现代化性能测试工具k6。 import http from k6/http; import { sleep } from k6; export default function () {http.get(https://test-api.co…

Backend - Django 项目创建 运行

目录 一、配置环境 二、创建 Django 项目 &#xff08;一&#xff09;新建文件夹 &#xff08;二&#xff09;打开文件夹 &#xff08;三&#xff09;打开运行终端 &#xff08;四&#xff09;创建基础项目 &#xff08;五&#xff09;创建app 1. 安装Django &#xf…

note-1

一个“逆向思维”的小例子&#xff1a;“一男生晚上到某银行ATM机存款&#xff0c;碰ATM机出现故障&#xff0c;5000元被吞。当即联系银行&#xff0c;被告知要等到天亮才能维修。其绞尽脑汁的想突然灵机一动&#xff0c;使用公用电话致电客服称&#xff1a;ATM机多吐出3000元&…

VR智慧酒店:提升人气入住率,助力酒店开辟新赛道

随着智能科技的不断进步&#xff0c;智能感、科技感也体现在我们的住宿体验上&#xff0c;VR智慧酒店可以让用户沉浸式体验高质量的酒店服务&#xff0c;这种全新的体验方式助力开启智能化酒店获客新模式&#xff0c;引爆超人气入住率。 传统的酒店行业推广成本高、效果差&…

map|动态规划|单调栈|LeetCode975:奇偶跳

作者推荐 【贪心算法】【中位贪心】.执行操作使频率分数最大 涉及知识点 单调栈 动态规划 map 题目 给定一个整数数组 A&#xff0c;你可以从某一起始索引出发&#xff0c;跳跃一定次数。在你跳跃的过程中&#xff0c;第 1、3、5… 次跳跃称为奇数跳跃&#xff0c;而第 2、…

linux 驱动——私有数据

文章目录 linux 驱动中的私有数据container_of驱动程序应用程序模块使用 linux 驱动中的私有数据 container_of 参考&#xff1a;linux——宏 list_entry/container_of 驱动程序 #include "linux/device/class.h" #include "linux/export.h" #include…

Python人脸识别

实现效果 代码 import cv2# 加载人脸识别分类器 face_cascade cv2.CascadeClassifier(haarcascade_frontalface_default.xml)# 打开摄像头 cap cv2.VideoCapture(0)while True:# 读取摄像头捕获的帧ret, frame cap.read()# 将帧转换为灰度图像gray cv2.cvtColor(frame, c…

迪文屏开发保姆级教程——页面键盘

迪文屏页面键盘保姆级教程。 本篇文章主要介绍了在DGBUS平台上使用页面键盘的步骤。 迪文屏官方开发指南PDF&#xff1a;&#xff08;不方便下载的私聊我发给你&#xff09; https://download.csdn.net/download/qq_21370051/88647174?spm1001.2014.3001.5503https://downloa…

vivado 关于时钟

关于时钟 在数字设计中&#xff0c;时钟代表了从寄存器可靠传输数据的时间基准注册。AMD Vivado™集成设计环境&#xff08;IDE&#xff09;计时引擎使用时钟计算时序路径要求并通过以下方式报告设计时序裕度的特性松弛计算的方法有关更多信息&#xff0c;请参阅Vivado Design…

AI百模大战:引领行业变革与开启人才黄金时代

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;Linux学习 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 技术进步&#xff1a;AI的飞速发展 1. 深度学习的多领域应用 2. 自然语言处理的语境理解提升 3. 计算机视觉的实时处理能力提高 4…

Python学习笔记(六):函数的多返回值、函数的多种参数使用形式、匿名函数、文件的读取操作、文件的写入 、文件的追加

目录 一、函数的多返回值 二、函数的多种参数使用形式 2.1位置参数 2.2关键字参数 2.3缺省参数 2.4不定长参数 三、匿名函数 3.1 函数作为参数传递 3.2 函数的定义 3.3 匿名函数定义语法&#xff1a; 四、文件的读取操作 4.1 open&#xff08;&#xff09;打开函数…

图卷积神经网络发展

1. 图神经网络&#xff08;GNN&#xff09; 图神经网络的概念最早在2005年提出。2009年Franco博士在其论文 [2]中定义了图神经网络的理论基础。 本文中所提到的图均指图论中的图(Graph)。它是一种由若干个结点(Node)及连接两个结点的边(Edge)所构成的图形&#xff0c;用于刻画…

【模式识别】解锁降维奥秘:深度剖析PCA人脸识别技术

​&#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;《模式之谜 | 数据奇迹解码》⏰诗赋清音&#xff1a;云生高巅梦远游&#xff0c; 星光点缀碧海愁。 山川深邃情难晤&#xff0c; 剑气凌云志自修。 目录 &#x1f30c;1 初识模式识…

智能化物联网(IoT):发展、问题与未来前景

导言 智能化物联网&#xff08;IoT&#xff09;作为信息技术领域的一项核心技术&#xff0c;正在深刻改变人们的生活和工作方式。本文将深入研究IoT的发展过程、遇到的问题及解决过程、未来的可用范围&#xff0c;以及在各国的应用和未来的研究趋势。探讨在哪些方面能够取得胜利…

k8s-ingress特性 9

TLS加密 创建证书 测试访问 auth认证 创建认证文件 rewrite重定向 进入域名时&#xff0c;会自动重定向到hostname.html 示例&#xff1a; 测试 版本的升级迭代&#xff0c;之前利用控制器进行滚动更新&#xff0c;在升级过程中无法做到快速回滚 更加平滑的升级&#xff1…

【数据结构】线段树算法总结(区间修改)

知识概览 线段树一般有5个操作&#xff1a; pushup&#xff1a;用子节点更新当前节点信息pushdown&#xff1a;把懒标记往下传build&#xff1a;初始化一棵树modify&#xff1a;修改一个区间query&#xff1a;查询一个区间 不带懒标记&#xff08;支持单点修改&#xff09;的线…

Mysql-干净卸载教程

卸载 服务停掉 先把mysql服务停掉&#xff0c;如下点击右键&#xff0c;停止运行。 删除C盘内文件 接下来c盘里面的三个文件下的MySQL一一删除&#xff0c;需要注意的是 需要注意的是programdata文件下可能 隐藏了MySQL文件&#xff0c;所以可以在查看选项显示隐藏的文件。 …

PolarDB-X、OceanBase、CockroachDB、TiDB二级索引写入性能测评

为什么要做这个测试 二级索引是关系型数据库相较于NoSQL数据库的一个关键差异。二级索引必须是强一致的&#xff0c;因此索引的写入需要与主键的写入放在一个事务当中&#xff0c;事务的性能是二级索引性能的基础。 目前市面上的分布式数据库中&#xff0c;从使用体验的角度看…

前后端分离下的鸿鹄电子招投标系统:使用Spring Boot、Mybatis、Redis和Layui实现源码与立项流程

在数字化时代&#xff0c;采购管理也正经历着前所未有的变革。全过程数字化采购管理成为了企业追求高效、透明和规范的关键。该系统通过Spring Cloud、Spring Boot2、Mybatis等先进技术&#xff0c;打造了从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通过…

argmin与argmax

argmin 是一个数学术语&#xff0c;用于表示一个函数在其定义域中取得最小值的参数值&#xff08;自变量的值&#xff09;&#xff0c;而不是最小值本身。 具体来说&#xff0c;argmin 表示函数的自变量&#xff08;通常是一个实数或向量&#xff09;&#xff0c;当输入到该函数…