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
docker101WordPress172.22.0.1
docker102database172.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网络

在这里插入图片描述

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

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

相关文章

C# 探险之旅:第二节 - 定义变量与变量赋值

欢迎再次踏上我们的C#学习之旅。今天&#xff0c;我们要聊一个超级重要又好玩的话题——定义变量与变量赋值。想象一下&#xff0c;你正站在一个魔法森林里&#xff0c;手里拿着一本空白的魔法书&#xff08;其实就是你的代码编辑器&#xff09;&#xff0c;准备记录下各种神奇…

URI 未注册(设置 语言和框架 架构和 DTD)

一、问题描述&#xff1a;在springboot项目中的resources中新建mybatis-config.xml文件时&#xff0c;从mybatis文档中复制的代码报错&#xff1a;URI 未注册(设置 | 语言和框架 | 架构和 DTD) 二、解决&#xff1a;在Springboot项目的设置->架构和DTD中添加 红色的网址&…

SSM 校园一卡通密钥管理系统 PF 于校园图书借阅管理的安全保障

摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装校园一卡通密钥管理系统软件来发挥其高效地信息处理的作用&a…

在PowerShell下运行curl命令出现错误:Invoke-WebRequest : 无法处理参数,因为参数名称“u”具有二义性

今天在Windows 11下测试Nanamq的HTTP API&#xff0c;按照其文档输入&#xff1a; curl -i --basic -u admin:public -X GET "http://localhost:8081/api/v4/subscriptions" 结果出现二义性错误&#xff1a; 而且输入curl --help命令想看看参数说明的时候&#xff…

java配置多数据源

三个数据库&#xff1a;master主库、back_one从库1、back_two从库2 1.application.yml配置三个数据库信息 spring:datasource:driver-class-name : com.mysql.jdbc.Driver# 主库master:jdbcUrl : jdbc:mysql://xxx:3306/master?useUnicodetrue&characterEncodingutf-8&a…

pytorch中的tqdm库

tqdm 是一个 Python 的进度条库&#xff0c;名字来源于阿拉伯语 "taqaddum"&#xff08;意思是“进步”&#xff09;。它以简单易用、高效著称&#xff0c;常用于循环操作中显示进度信息。 基本用法 1. 普通循环 tqdm 可以轻松为 for 循环添加进度条&#xff1a; …

MongoDB数据建模小案例

MongoDB数据建模小案例 朋友圈评论内容管理 需求 社交类的APP需求,一般都会引入“朋友圈”功能,这个产品特性有一个非常重要的功能就是评论体系。 先整理下需求: 这个APP希望点赞和评论信息都要包含头像信息: 点赞列表,点赞用户的昵称,头像;评论列表,评论用户的昵称…

针对嵌入式图形界面的图片压缩,几种比较平衡的算法选择:

RLE (Run Length Encoding) 变种 RLE-4: 4位游程编码&#xff0c;适合图标等色彩数较少的图像SRLE (Sparse RLE): 稀疏型RLE&#xff0c;对于UI中大面积相同颜色区域效果很好优点&#xff1a;解码速度快&#xff0c;实现简单缺点&#xff1a;对于复杂图案压缩率较低特别适合&am…

C++研发笔记16——C语言程序设计初阶学习笔记14

本篇笔记我们继续来学习第三部分《分支语句和循环语句》&#xff0c;在上一篇中我们详细学习了循环语句——for语句以及循环语句——do-while循环&#xff0c;接下来本部分的内容还包括&#xff1a;折半查找算法、猜数字游戏、goto语句。本篇笔记便可以结束第三部分的知识学习部…

三一集团Java开发面试题及参考答案

Java 中有几种常见的线程池? 在 Java 中,常见的线程池有以下几种: 首先是 FixedThreadPool(固定线程数线程池)。它的特点是创建一个固定大小的线程池,线程数量在初始化的时候就已经确定。例如,通过 Executors.newFixedThreadPool (int nThreads) 来创建,其中 nThreads …

CSS元素宽高特点、类型转化、显式和隐藏(display)

元素的宽高特点 块级元素 可以设置宽高&#xff0c;不可以和其他元素在一行设置宽高时&#xff0c;元素的宽高为设置的值没有设置宽高时&#xff0c;宽度和父级宽高一样&#xff0c;高度由元素内容决定 行级元素 不可以设置宽高&#xff0c;可以和其他元素在一行元素的宽高…

k8s的Pod亲和性

针对对象为Pod&#xff0c;目的是实现&#xff0c;新建Pod和目标Pod调度到一起&#xff0c;在同一个Node上。 示例&#xff1a; rootk8s-master:/home/vagrant# cat pod.yaml apiVersion: v1 kind: Pod metadata:name: testpod01labels:app: myapp01env: test1 spec:conta…

视频推拉流EasyDSS无人机直播技术巡查焚烧、烟火情况

焚烧作为一种常见的废弃物处理方式&#xff0c;往往会对环境造成严重污染。因此&#xff0c;减少焚烧、推广绿色能源和循环经济成为重要措施。通过加强森林防灭火队伍能力建设与长效机制建立&#xff0c;各地努力减少因焚烧引发的森林火灾&#xff0c;保护生态环境。 巡察烟火…

K8S对接ceph的RBD块存储

1 PG数量限制问题 1.1 原因分析 1.还是老样子&#xff0c;先创建存储池&#xff0c;在初始化为rbd。 [rootceph141~]# ceph osd pool create wenzhiyong-k8s 128 128 Error ERANGE: pg_num 128 size 3 for this pool would result in 295 cumulative PGs per OSD (2067 tot…

React Router 6的学习

安装react-router-dom npm i react-router-dom 支持不同的路由创建 createBrowserRouter 特点 推荐使用的方式&#xff0c;基于 HTML5 的 History API。支持用户友好的 URL&#xff0c;无需 #。适用于生产环境的绝大多数场景。 适用 使用现代浏览器&#xff0c;支持 pus…

React第十四节useState使用详解差异

一、useState() Hook 使用 useState视图更新用法 1、写法&#xff1a; import { useState } from react const [name, setName] useState(Andy)利用数组解构写法&#xff0c; 第一个参数是自定义的属性&#xff0c;用于初始化时候渲染&#xff0c;如上面代码&#xff0c;初…

微信小程序web-view 嵌套h5界面 实现文件预览效果

实现方法&#xff1a;(这里我是在小程序里面单独加了一个页面用来下载预览文件) 安装 使用方法请参考文档 npm 安装 npm install weixin-js-sdk import wx from weixin-js-sdk预览 h5界面代码 <u-button click"onclick" type"primary" :loading"…

HTTP 状态码大全

常见状态码 200 OK # 客户端请求成功 400 Bad Request # 客户端请求有语法错误 不能被服务器所理解 401 Unauthorized # 请求未经授权 这个状态代码必须和WWW- Authenticate 报头域一起使用 403 Forbidden # 服务器收到请求但是拒绝提供服务 404 Not Found # 请求资源不存…

一文详解TCP协议 [图文并茂, 明了易懂]

欢迎来到啊妮莫的学习小屋! 目录 什么是TCP协议 TCP协议特点✨ TCP报文格式 三次握手和四次挥手✨ 可靠性 效率性 基于字节流✨ 基于TCP的应用层协议 什么是TCP协议 TCP(传输控制协议, Transmission Control Protocol) 是一种面向连接的, 可靠的, 基于字节流的传输层通…

在Linux(ubuntu22.04)搭建rust开发环境

1.安装rust 1.安装curl: sudo apt install curl 2.安装rust最新版 curl --proto ‘https’ --tlsv1.2 https://sh.rustup.rs -sSf | sh 安装完成后出现&#xff1a;Rust is installed now. Great! 重启当前shell即可 3.检验是否安装成功 rustc --version 结果出现&…