docker的网络类型和使用方式
docker的网络类型
5种网络类型
bridge
默认类型,桥接到宿主机docker0的网络,有点类似于VM虚拟机的NAT网络模型。
案例:
docker run --rm -itd --network bridge --name wzy666wzy-bridge alpine
host
host类型,共享宿主机的网络空间,网络性能是最高的。
案例:
docker run --rm -itd --network host --name wzy666wzy-host alpine
none
只有本地回环网卡,没有其他网络,即该容器不能上网。
案例:
docker run --rm -itd --network none --name wzy666wzy-none alpine
container
共享其他容器的网络,这个网络在K8S中Pod是频繁使用的。
案例:
docker run --rm -itd --network container:wzy666wzy-bridge --name wzy666wzy-container alpine
custom network
自定义网络,我们可以使用"docker network create"创建自定义网络。
同一个自定义网络中,各个容器可以直接基于容器名称进行通信,无需解析"/etc/hosts"!
bridge类型
docker run -dit --network bridge --name bri-net apps:v1
host类型
docker run -dit --network host --name host-net apps:v1
none不使用网络连接
docker run -dit --network none --name none-net apps:v1
自定义网络
link互联
创建容器
[root@docker101~]# docker run -di --name c1 apps:v1
[root@docker101~]# docker run -di --name c2 --link c1 apps:v1
查看ip,2个容器的IP并不相同
停止容器c1导致c2没有ip
docker stop c1
开启容器c1可以解决c2没网的问题
create network
创建
创建网络时可以自定义网关,IP地址范围,子网范围,网络类型等
创建:docker network create --subnet 20.0.0.0/24 --ip-range 20.0.0.254/24 --gateway 20.0.0.254 qwe
– 默认是bridge类型
-d bridge 手动指定类型
删除:docker network docker network rm qwe
使用
[root@docker101~]# docker run -d --name net-qwe -p 80:80 --network qwe apps:v1
8851c9662496ce924b299786789cc85b9e8ee3fa4781156959d106cba45660e6
[root@docker101~]# curl 10.0.0.101
<!DOCTYPE html>
<html><head><meta charset="utf-8"/><title>yinzhengjie apps v1</title><style>div img {width: 900px;height: 600px;margin: 0;}</style></head><body><h1 style="color: green">凡人修仙传 v1 </h1><div><img src="1.jpg"><div></body></html>
[root@docker101~]# docker exec -it net-qwe ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever
15: eth0@if16: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP link/ether 02:42:14:00:00:01 brd ff:ff:ff:ff:ff:ffinet 20.0.0.1/24 brd 20.0.0.255 scope global eth0valid_lft forever preferred_lft forever
[root@docker101~]# docker container inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' net-qwe
20.0.0.1
使用自定义网络自动写入hosts
[root@docker101~]# docker network create -d bridge --subnet 11.0.0.0/24 --gateway 11.0.0.254 wzy666[root@docker101~]# docker run -d -p 81:80 --name n1 --network wzy666 --ip 11.0.0.1 apps:v1[root@docker101~]# docker run -d -p 82:80 --name n2 --network wzy666 --ip 11.0.0.2 apps:v1# 没有手动添加hosts可以ping通
[root@docker101~]# docker exec n1 ping n2 -c3
PING n2 (11.0.0.2): 56 data bytes
64 bytes from 11.0.0.2: seq=0 ttl=64 time=0.261 ms
64 bytes from 11.0.0.2: seq=1 ttl=64 time=0.176 ms
64 bytes from 11.0.0.2: seq=2 ttl=64 time=0.166 ms--- n2 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.166/0.201/0.261 ms[root@docker101~]# docker exec n1 cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
11.0.0.1 07888692a0cf
跨节点互联
macvlan
节点 | 容器 | 容器IP |
---|---|---|
docker101 | WordPress | 172.22.0.1 |
docker102 | database | 172.22.0.2 |
1.两个节点加载Linux内核是否支持macvlan模块,
lsmod | grep macvlan
modprobe macvlan #临时开启macvlan
lsmod | grep macvlan
2.两个节点创建同网段的自定义网络类型
docker network create -d macvlan --subnet 172.29.0.0/16 --gateway 172.29.0.254 -o parent=eth0 wzy-macvlan
3.运行容器
docker102节点:
docker run -d --name db --network wzy-macvlan --ip 172.22.0.2 \-e MYSQL_ALLOW_EMPTY_PASSWORD=yes \-e MYSQL_DATABASE=wordpress \-e MYSQL_USER=wzy \-e MYSQL_PASSWORD=wzy666 \mysql:8.3.0-oracle
docker101节点:
docker run -d --name wp \
--network wzy-macvlan --ip 172.22.0.1 \
-e WORDPRESS_DB_HOST=172.22.0.2:3306 \
-e WORDPRESS_DB_USER=wzy \
-e WORDPRESS_DB_PASSWORD=wzy666 \
-e WORDPRESS_DB_NAME=wordpress \
-p 80:80 \
wordpress# 最后添加bridge网卡
docker network connect bridge wp
4.访问测试网页
overlay网络
1.运行consul容器
docker run -d --network host --restart always --name=dev-consul -e CONSUL_BIND_INTERFACE=eth0 \
consul:1.15.4root@docker101:~# ss -ntl | grep 8500
LISTEN 0 4096 *:8500 *:*
2.docker101/102客户端指定consul服务的地址(客户端对应的cluster-advertise值要根据实际情况调整)。然后重启docker.service
[root@docker101 ~]# cat /etc/docker/daemon.json
{"cluster-store": "consul://10.0.0.101:8500","cluster-advertise": "10.0.0.101:6666"
}[root@docker102~]# systemctl restart docker.service
查看consul节点信息:
3.docker101创建overlay网络
[root@docker101~]# docker network create -d overlay \
--subnet 172.30.0.0/16 --gateway 172.30.0.254 wzy-overlay
该网络同步到102节点
[root@docker102~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
3009cd56b1f6 bridge bridge local
ca55b5dcb849 host host local
8a4525466e60 none null local
454a12a54ef7 wzy-overlay overlay global
4.创建容器
[root@docker101~]# docker run -d -p 81:80 --name c1 --network wzy-overlay apps:v1
[root@docker102~]# docker run -d -p 82:80 --name c2 --network wzy-overlay apps:v1
5.查看IP地址
[root@docker101~]# docker exec c1 ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever
40: eth0@if41: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1450 qdisc noqueue state UP link/ether 02:42:ac:1e:00:02 brd ff:ff:ff:ff:ff:ffinet 172.30.0.2/16 brd 172.30.255.255 scope global eth0valid_lft forever preferred_lft forever
42: eth1@if43: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP link/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ffinet 172.18.0.2/16 brd 172.18.255.255 scope global eth1valid_lft forever preferred_lft forever
[root@docker102~]# docker exec c2 ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever
8: eth0@if9: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1450 qdisc noqueue state UP link/ether 02:42:ac:1e:00:01 brd ff:ff:ff:ff:ff:ffinet 172.30.0.1/16 brd 172.30.255.255 scope global eth0valid_lft forever preferred_lft forever
11: eth1@if12: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP link/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ffinet 172.18.0.2/16 brd 172.18.255.255 scope global eth1valid_lft forever preferred_lft forever
6.c1可以ping通c2,底层走了vxlan网络
_lft forever
11: eth1@if12: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP link/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ffinet 172.18.0.2/16 brd 172.18.255.255 scope global eth1valid_lft forever preferred_lft forever
6.c1可以ping通c2,底层走了vxlan网络
相关文章:

docker的网络类型和使用方式
docker的网络类型 5种网络类型 bridge 默认类型,桥接到宿主机docker0的网络,有点类似于VM虚拟机的NAT网络模型。 案例: docker run --rm -itd --network bridge --name wzy666wzy-bridge alpine host host类型,共享宿主机的网络空间&#…...

二维立柱图|积水类问题
三类问题 求总的积水量求水坑的个数求水坑最深的深度 基本思路 我们需要从列的角度来看第 i i i 列是不是有积水,但我们该如何确定第 i i i 列是否是有积水? 方法是事先维护一个前后缀的最大值, L [ i ] L[i] L[i] 和 R [ i ] R[i] R[…...

vue前端实现导出页面为word(两种方法)
将vue页面导出为word文档,不用写模板,直接导出即可。 第一种方法(简单版) 第一步:安装所需依赖 npm install html-docx-js -S npm install file-saver -S第二步:创建容器,页面使用方法(简单版࿱…...

22. Three.js案例-创建旋转的圆环面
22. Three.js案例-创建旋转的圆环面 实现效果 知识点 WebGLRenderer (WebGL渲染器) THREE.WebGLRenderer 是Three.js中最常用的渲染器,用于将场景渲染到WebGL画布上。 构造器 new THREE.WebGLRenderer(parameters) 参数类型描述parametersObject可选参数对象&…...

Elasticsearch:使用阿里 infererence API 及 semantic text 进行向量搜索
在之前的文章 “Elasticsearch 开放推理 API 新增阿里云 AI 搜索支持”,它详细描述了如何使用 Elastic inference API 来针对阿里的密集向量模型,稀疏向量模型, 重新排名及 completion 进行展示。在那篇文章里,它使用了很多的英文…...

Linux WEB服务器的部署及优化
1.用户常用关于web的信息 1.1.什么是www www是world wide web的缩写,及万维网,也就是全球信息广播的意思。 通常说的上网就是使用www来查询用户所需要的信息。 www可以结合文字、图形、影像以及声音等多媒体,超链接的方式将信息以Internet…...

人工智能大模型LLM开源资源汇总(持续更新)
说明 目前是大范围整理阶段,所以存在大量机翻说明,后续会逐渐补充和完善资料,减少机翻并增加说明。 Github上的汇总资源(大部分英文) awesome-production-machine-learning 此存储库包含一系列精选的优秀开源库&am…...

目标跟踪算法:SORT、卡尔曼滤波、匈牙利算法
目录 1 目标检测 2 卡尔曼滤波 3《从放弃到精通!卡尔曼滤波从理论到实践》视频简单学习笔记 3.1 入门 3.2 进阶 3.2.1 状态空间表达式 3.2.2 高斯分布 3.3 放弃 3.4 精通 4 匈牙利算法 5 《【运筹学】-指派问题(匈牙利算法)》视…...

Java版-图论-拓扑排序与有向无环图
拓扑排序 拓扑排序说明 对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边<u,v>∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列…...

GTC2024 回顾 | 优阅达携手 HubSpot 亮相上海,赋能企业数字营销与全球业务增长
从初创企业入门到成长型企业拓展,再到 AI 驱动智能化运营,HubSpot 为企业的每步成长提供了全方位支持。 2024 年 11 月下旬,备受瞩目的 GTC2024 全球流量大会(上海)成功举办。本次大会汇聚了全国内多家跨境出海领域企业…...

eclipse启动的时候,之前一切很正常,但突然报Reason: Failed to determine a suitable driver class的解决
1、之前项目都是启动正常的,然后运行以后发现启动不了了,还会报错: 2、这个Reason: Failed to determine a suitable driver class,说是没有合适的驱动class spring:datasource:url: jdbc:sqlserver://192.168.1.101:1433;databa…...
_tkinter.TclError: can‘t find package tkdnd Unable to load tkdnd library.解决办法
Traceback (most recent call last): File “tkinterdnd2\TkinterDnD.py”, line 55, in _require _tkinter.TclError: can’t find package tkdnd During handling of the above exception, another exception occurred: Traceback (most recent call last): File “1.导入总表…...

VBA高级应用30例应用在Excel中的ListObject对象:向表中添加注释
《VBA高级应用30例》(版权10178985),是我推出的第十套教程,教程是专门针对高级学员在学习VBA过程中提高路途上的案例展开,这套教程案例与理论结合,紧贴“实战”,并做“战术总结”,以…...
folly库Conv类型转换源码解析
1,普通类型转换 例子1: bool boolV = true;EXPECT_EQ(to<bool>(boolV), true);int intV = 42;EXPECT_EQ(to<int>(intV), 42);float floatV = 4.2f;EXPECT_EQ(to<float>(floatV), 4.2f);double doubleV = 0.42;EXPECT_EQ(to<double>(doubleV), 0.42)…...
UE4 骨骼网格体合并及规范
实现代码 // Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h" #include "SkeletalMeshMerge.h" #include "Kismet/BlueprintFunctionLibrary.h" #include "AceMeshCom…...

Java版企业电子招标采购系统源业码Spring Cloud + Spring Boot +二次开发+ MybatisPlus + Redis
功能描述 1、门户管理:所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含:招标公告、非招标公告、系统通知、政策法规。 2、立项管理:企业用户可对需要采购的项目进行立项申请,并提交审批,查看所…...
通过源码⼀步⼀步分析 ArrayList 扩容机制
ArrayList 是 Java 中常用的集合类,它底层实现是基于数组的。为了处理元素的动态增加,ArrayList 会在容量不足时进行扩容。以下是通过源码逐步分析 ArrayList 扩容机制的过程。 1. ArrayList 类的基本结构 ArrayList 继承自 AbstractList,实…...
源码分析之Openlayers中默认Controls控件渲染原理
概述 Openlayers 中默认的三类控件是Zoom、Rotate和Attribution 源码分析 defaults方法 Openlayers 默认控件的集成封装在defaults方法中,该方法会返回一个Collection的实例,Collection是一个基于数组封装了一些方法,主要涉及到数组项的添…...
中间件的分类与实践:从消息到缓存
目录 一. 中间件的基本概念 二. 中间件的主要类型 (1)消息中间件(Message-Oriented Middleware, MOM): (2)数据库中间件: (3)Web中间件: &a…...

京东e卡 h5st 4.96
声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 有相关问题请第一时间头像私信联系我删…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...

使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...

用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...
Modbus RTU与Modbus TCP详解指南
目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...