千家信息网

Docker网络的示例分析

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,这篇文章将为大家详细讲解有关Docker网络的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Docker networks基于namespace的netwo
千家信息网最后更新 2025年12月03日Docker网络的示例分析

这篇文章将为大家详细讲解有关Docker网络的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

Docker networks

基于namespace的network网络隔离

一个样例
# 创建两个network namespaceip netns add ns1ip netns add ns2# 创建成对的网卡设备sudo ip link add veth-a type veth peer name veth-b# 将网卡分别放在两个namespace中sudo ip link set veth-a netns ns1sudo ip link set veth-b netns ns2# 启用两个网卡sudo ip netns exec ns1 ip link set dev veth-a upsudo ip netns exec ns2 ip link set dev veth-b up# 为两个网卡分配ip地址信息sudo ip netns exec ns1 ip addr add 10.0.0.1/24 dev veth-asudo ip netns exec ns2 ip addr add 10.0.0.2/24 dev veth-b#验证网络连通性在ns1中执行ping veth-bsudo ip netns exec ns1 ping 10.0.0.2

overlay network

consul
docker run -d -p 8500:8500 --restart=always --name=consul progrium/consul -server -bootstrap -advertise=172.17.0.200# nohup consul agent -server -bootstrap -ui -data-dir /var/lib/consul -client=10.0.0.2 -bind=10.0.0.2 &> /var/log/consul.log &
其他节点docker.service configure
systemctl status docker.service # 查看docker.service在什么位置ExecStart=/usr/bin/dockerd -H fd:// --cluster-store=consul://172.17.0.200:8500 --cluster-advertise=ens33:2376 # ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375 --cluster-store consul://10.0.0.2:8500 --cluster-advertise 10.0.0.2:2375# ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375 --cluster-store consul://10.0.0.2:8500 --cluster-advertise 10.0.0.3:2375
在consul中查看服务是否被发现

url:http://172.17.0.200:8500/ui/#/dc1/kv/docker/nodes/

创建overlay网络
docker network create -d overlay ov1root@node1:~# docker network lsNETWORK ID          NAME                DRIVER              SCOPEba720f1ef854        bridge              bridge              local5b69a097a085        host                host                local9c19e28d7789        none                null                localbaa622c89664        ov1                 overlay             global *root@master:~# docker network ls |grep ov1baa622c89664        ov1                 overlay             global *root@node2:/etc/apt# docker network ls | grep ov1baa622c89664        ov1                 overlay             global *# check logs[node2]docker run -itd --name busybox01 --network=ov1 busyboxdocker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' f454d47dd873 ##查找ip# errordocker: Error response from daemon: endpoint with name busybox01 already exists in network ov1.root@node1:~# docker run -itd --name busybox02 --network ov1 busybox d7f1a2c5d81c33513269ba99306b6f5cb7f64e02ab7583552f8fe71aab719952root@node1:~# docker exec busybox02 ping -c 4 busybox01PING busybox01 (10.0.0.2): 56 data bytes64 bytes from 10.0.0.2: seq=0 ttl=64 time=0.760 ms64 bytes from 10.0.0.2: seq=1 ttl=64 time=0.521 ms
check netns
ln -s /var/run/docker/netns /var/run/netnsip netns list
重启

如果docker host被关机了,重启后没有原先创建的overlay网络,此时就要查看docker host上的consul/(k/v)服务是否停掉了;

macvlan

打开网卡的混杂模式
root@node2:~# ip link show ens332: ens33:  mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000    link/ether 00:0c:29:27:f1:72 brd ff:ff:ff:ff:ff:ffip link set ens33 promisc onroot@node2:~# ip link show ens332: ens33:  mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000    link/ether 00:0c:29:27:f1:72 brd ff:ff:ff:ff:ff:ffvmware/virtualbox也需要打开混杂模式
create macvlan
root@node1:~# docker network create -d macvlan --subnet=172.16.0.0/24 --gateway=172.16.0.1 -o parent=ens33 macnet01 #在node2上同样运行此命令root@node1:~# docker network ls | grep macnet010f2f883adb06        macnet01            macvlan             localdocker run -itd --name busybox04 --ip 172.16.0.3 --network macnet01 busyboxroot@node1:~# docker exec busybox04 ping -c 4 172.17.0.4root@node2:~# docker exec busybox05 ping -c 4 172.17.0.3

docker network namespace的开源管理工具

  • netenter

pipework网络

docker容器网络配置工具
  • pipework

Docker高级网络实践

linux network namespace(命令行下)

  • 创建一个network namespace

  • 显示network namespace

  • 删除network namespace

  • 在network namespace中执行shell命令

关于"Docker网络的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

网络 网卡 两个 命令 篇文章 示例 分析 工具 更多 模式 服务 混杂 不错 实用 高级 一个样 位置 信息 内容 地址 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 java插入数据库 护苗网络安全课队会 linux 服务器性能 崇明区自动软件开发产品介绍 数据库数据处理的目的是什么 herb数据库如何使用 数据库中怎么移动字段代码 洛阳公司办公软件开发 DEDECMS采集软件开发 我是网络安全小卫士电脑绘画 家庭无盘系统服务器最低配置 装用友软件提示少数据库 贵阳企业级服务器如何挑选 杭州公安数据库备案 重庆直播软件开发机构 江西昌圣网络技术有限公司 网络安全排查整改情况汇报 东莞贞元网络技术有限公司介绍 越南服务器选购攻略 数据库中如何进行分表 网络安全观后感200字 中医药化学成分数据库 帆软根据参数多数据库查询 飞兔云传怎么连不上服务器 区块链软件开发犯法吗 泉州聊天软件开发多少钱 菜鸟网络技术 上海办公 河南电脑软件开发靠谱吗 我的世界创造服务器需要登录吗 王者荣耀服务器河洛一方
0