containerd手动配置容器网络

news2024/11/16 9:21:14

containerd手动配置容器网络

  • 机器详情
  • nerdctl启动一个不带网络的容器
  • 获取容器ID、PID与network namespace路径
  • 准备bridge插件的执行配置文件
  • 通过下面的命令调用bridge插件
  • 准备tuning插件文件
  • 执行下面的命令调用tuning插件
  • 准备portmap插件文件
  • 执行下面的命令调用portmap插件
  • 删除网络

机器详情

操作系统:Ubuntu 22.04.4 LTS
内核版本:5.15.0-112-generic
containerd版本:v1.7.1
nerdctl版本:1.0.0

nerdctl启动一个不带网络的容器

nerdctl  run -d --network none swr.cn-north-4.myhuaweicloud.com/ctl456/nginx:latest

获取容器ID、PID与network namespace路径

nerdctl ps

在这里插入图片描述

nerdctl inspect 容器ID -f '{{ .State.Pid }}'

在这里插入图片描述此时可以查看容器网络命名空间中的网络接口,可以看到网络命名空间内只有一个网络回环接口lo,并没有其他任何配置

nsenter -t PID -n ip a

在这里插入图片描述network namespace路径

/proc/PID/ns/net

准备bridge插件的执行配置文件

vim bridge.json
{
    "cniVersion": "1.0.0",
    "name": "dbnet",
    "type": "bridge",
    "bridge": "mycni0",
    "isGateway": true,
    "keyA": ["some more","plugin specific","configuration"],
    "ipam": {
        "type": "host-local",
        "subnet": "10.1.0.0/16",
        "routes": [{"dst": "0.0.0.0/0"}]
    },
    "dns": {"nameservers": ["10.1.0.1"]}
}

通过下面的命令调用bridge插件

CNI_COMMAND=ADD CNI_CONTAINERID=容器ID CNI_NETNS=network namespace路径 CNI_IFNAME=eth0 CNI_PATH=/opt/cni/bin /opt/cni/bin/bridge < ~/bridge.json

成功返回如下的内容

root@ubuntu:~# CNI_COMMAND=ADD CNI_CONTAINERID=3cc3646b6e9c CNI_NETNS=/proc/1377/ns/net CNI_IFNAME=eth0 CNI_PATHcni/bin /opt/cni/bin/bridge < ~/bridge.json
{
    "cniVersion": "1.0.0",
    "interfaces": [
        {
            "name": "mycni0",
            "mac": "12:15:f7:e2:95:cd"
        },
        {
            "name": "veth9bfbdf99",
            "mac": "22:0d:c2:3d:48:ca"
        },
        {
            "name": "eth0",
            "mac": "3a:98:85:45:f5:af",
            "sandbox": "/proc/1377/ns/net"
        }
    ],
    "ips": [
        {
            "interface": 2,
            "address": "10.1.0.2/16",
            "gateway": "10.1.0.1"
        }
    ],
    "routes": [
        {
            "dst": "0.0.0.0/0"
        }
    ],
    "dns": {
        "nameservers": [
            "10.1.0.1"
        ]
    }
root@ubuntu:~# 

可以再次提供如下的命令查看容器IP

nsenter -t PID -n ip a

在这里插入图片描述查看物理机的IP
在这里插入图片描述查看物理机路由
在这里插入图片描述
可以通过容器的IP访问到nginx服务
在这里插入图片描述

准备tuning插件文件

vim tuning.json​​
{
    "cniVersion": "1.0.0",
    "name": "dbnet",
    "type": "tuning",
    "sysctl": {"net.core.somaxconn": "500"},
    "runtimeConfig": {"mac": "00:11:22:33:44:66"}, /*替换capabilities,将eth0的mac值调整为测试值*/
    "prevResult": { /*调用bridge插件放回的内容*/
        "interfaces": [
            {
                "name": "mycni0",
                "mac": "12:15:f7:e2:95:cd"
            },
            {
                "name": "veth9bfbdf99",
                "mac": "22:0d:c2:3d:48:ca"
            },
            {
                "name": "eth0",
                "mac": "3a:98:85:45:f5:af",
                "sandbox": "/proc/1377/ns/net"
            }
        ],
        "ips": [
            {
                "interface": 2,
                "address": "10.1.0.2/16",
                "gateway": "10.1.0.1"
            }
        ],
        "routes": [
            {
                "dst": "0.0.0.0/0"
            }
        ],
        "dns": {
            "nameservers": ["10.1.0.1"]
        }
    }
}

执行下面的命令调用tuning插件

CNI_COMMAND=ADD CNI_CONTAINERID=容器ID CNI_NETNS=network namespace路径 CNI_IFNAME=eth0 CNI_PATH=/opt/cni/bin /opt/cni/bin/tuning < ~/tuning.json

成功返回如下的内容

root@ubuntu:~# CNI_COMMAND=AD​​D​​ CNI_CONTAI​​NERID=3cc3646b6e9c CNI_NETNS=/proc/1377/ns/net CNI_IFNAME=eth0 CNI_PATH=/opt/cni/bin /opt/cni/bin/tuning < ~/tuning.json​​ 
{
    "cniVersion": "1.0.0",
    "interfaces": [
        {
            "name": "mycni0",
            "mac": "12:15:f7:e2:95:cd"
        },
        {
            "name": "veth9bfbdf99",
            "mac": "22:0d:c2:3d:48:ca"
        },
        {
            "name": "eth0",
            "mac": "00:11:22:33:44:66",
            "sandbox": "/proc/1377/ns/net"
        }
    ],
    "ips": [
        {
            "interface": 2,
            "address": "10.1.0.2/16",
            "gateway": "10.1.0.1"
        }
    ],
    "routes": [
        {
            "dst": "0.0.0.0/0"
        }
    ],
    "dns": {
        "nameservers": [
            "10.1.0.1"
        ]
    }
}root@ubuntu:~# 

可以通过如下的命令查看容器IP的mac地址是否修改

nsenter -t PID -n ip a

在这里插入图片描述

准备portmap插件文件

vim portmap.json
{
    "cniVersion": "1.0.0",
    "name": "dbnet",
    "type": "portmap",
    "runtimeConfig": {"portMappings": [{"hostPort": 8080,"containerPort": 80,"protocol": "tcp"}]},
    "prevResult": {
        "interfaces": [
            {
                "name": "mycni0",
                "mac": "12:15:f7:e2:95:cd"
            },
            {
                "name": "veth9bfbdf99",
                "mac": "22:0d:c2:3d:48:ca"
            },
            {
                "name": "eth0",
                "mac": "00:11:22:33:44:66",
                "sandbox": "/proc/1377/ns/net"
            }
        ],
        "ips": [
            {
                "interface": 2,
                "address": "10.1.0.2/16",
                "gateway": "10.1.0.1"
            }
        ],
        "routes": [
            {
                "dst": "0.0.0.0/0"
            }
        ],
        "dns": {
            "nameservers": ["10.1.0.1"]
        }
    }
}

执行下面的命令调用portmap插件

CNI_COMMAND=ADD CNI_CONTAINERID=容器ID CNI_NETNS=network namespace路径 CNI_IFNAME=eth0 CNI_PATH=/opt/cni/bin /opt/cni/bin/portmap < ~/portmap.json

成功返回如下的内容

root@ubuntu:~# CNI_COMMAND=ADD CNI_CONTAINERID=3cc3646b6e9c CNI_NETNS=/proc/1377/ns/net CNI_IFNAME=eth0 CNI_PATH=/opt/cni/bin /opt/cni/bin/portmap <​​ ~/portmap.json 
{
    "cniVersion": "1.0.0",
    "interfaces": [
        {
            "name": "mycni0",
            "mac": "12:15:f7:e2:95:cd"
        },
        {
            "name": "veth9bfbdf99",
            "mac": "22:0d:c2:3d:48:ca"
        },
        {
            "name": "eth0",
            "mac": "00:11:22:33:44:66",
            "sandbox": "/proc/1377/ns/net"
        }
    ],
    "ips": [
        {
            "interface": 2,
            "address": "10.1.0.2/16",
            "gateway": "10.1.0.1"
        }
    ],
    "routes": [
        {
            "dst": "0.0.0.0/0"
        }
    ],
    "dns": {
        "nameservers": [
            "10.1.0.1"
        ]
    }
}root@ubuntu:~#

可以通过物理及的IP:8080访问到容器的nginx服务
在这里插入图片描述

删除网络

创建网络时,容器运行时按照顺序依次调用bridge、tuning、portmap插件,而删除网络时,则按照相反的顺序依次调用portmap、tuning、bridge插件。

CNI_COMMAND=DEL CNI_CONTAINERID=容器ID CNI_NETNS=network namespace路径 CNI_IFNAME=eth0 CNI_PATH=/opt/cni/bin /opt/cni/bin/portmap < ~/portmap.json
CNI_COMMAND=DEL CNI_CONTAINERID=容器ID CNI_NETNS=network namespace路径 CNI_IFNAME=eth0 CNI_PATH=/opt/cni/bin /opt/cni/bin/tuning < ~/tuning.json
vim bridge-del.json
{
    "cniVersion": "1.0.0",
    "name": "dbnet",
    "type": "bridge",
    "bridge": "mycni0",
    "isGateway": true,
    "keyA": ["some more","plugin specific","configuration"],
    "ipam": {
        "type": "host-local",
        "subnet": "10.1.0.0/16",
        "routes": [{"dst": "0.0.0.0/0"}]
    },
    "dns": {"nameservers": ["10.1.0.1"]},
    "prevResult": {
        "interfaces": [
            {
                "name": "mycni0",
                "mac": "12:15:f7:e2:95:cd"
            },
            {
                "name": "veth9bfbdf99",
                "mac": "22:0d:c2:3d:48:ca"
            },
            {
                "name": "eth0",
                "mac": "3a:98:85:45:f5:af",
                "sandbox": "/proc/1377/ns/net"
            }
        ],
        "ips": [
            {
                "interface": 2,
                "address": "10.1.0.2/16",
                "gateway": "10.1.0.1"
            }
        ],
        "routes": [
            {
                "dst": "0.0.0.0/0"
            }
        ],
        "dns": {
            "nameservers": ["10.1.0.1"]
        }
    }
}
CNI_COMMAND=DEL CNI_CONTAINERID=容器ID CNI_NETNS=network namespace路径 CNI_IFNAME=eth0 CNI_PATH=/opt/cni/bin /opt/cni/bin/bridge < ~/bridge-del.json

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

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

相关文章

算法竞赛数论杂题

menji 和 gcd 题目&#xff1a; 一开始以为是只有l不确定&#xff0c;r是确定的&#xff0c;这样的话我们可以枚举r的所有约数&#xff0c;然后对其每个约数x进行判断&#xff0c;判断是否满足题意&#xff0c;具体做法是先让l % x如果 0则该约数可行&#xff0c;如果不可行…

文件扫描工具都有哪些?职场大佬都在用的文本提取工具大盘点~

回想起刚毕业初入职场那阵子&#xff0c;领导让帮忙把纸质文件扫描提取为文本时&#xff0c;还只会傻乎乎地一点点操作&#xff0c;属实是费劲得很&#xff01; 好在后面受朋友安利&#xff0c;找到了4个能够快速实现文件扫描文字提取的方法&#xff0c;这才让我的办公效率蹭蹭…

[SCAU 课程设计参考] 活动管理程序

(仅供参考!!!!!!) 废话不多说&#xff0c;直接上代码&#xff01;(但是量有点多&#xff0c;放前面影响观感&#xff0c;所以还是先不放了&#xff0c;文章末尾有链接) 题目的要求: 提要:我的设计只是一个参考&#xff0c;当时还是大一的时候写的&#xff0c;代码比较青涩&a…

[学习笔记]-MyBatis-Plus简介

简介 Mybatis-Plus&#xff08;简称 MP&#xff09;是一个 MyBatis (opens new window)的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 简言之就是对单表的增删改查有了很好的封装。基本不用再单独写sql语句了。目前此类…

微博舆情分析系统可以继续完善的基于python 前端vue

微博舆情分析系统可以继续完善的&#xff0c;前后端分离&#xff0c;前端基于vue 后端基于python的flask可以说是非常的简洁&#xff0c;支持实时更新数据。界面如图 主要工作点体现在后端实时更新数据跟数据的处理方面上&#xff0c;后续有空会用hadoop来处理海量数据真…

数据库 | 试卷四

1.数据库系统的特点是 数据共享、减少数据冗余、数据独立、避免了数据不一致和加强了数据保护 2.关系模型的数据结构是二维表结构 3.聚簇索引 cluster index 4. 这里B&#xff0c;C都是主属性&#xff0c;所以B->C不是非主属性对码的部分函数依赖 候选键&#xff08;AC&a…

Jlink下载固件到RAM区

Jlink下载固件到RAM区 准备批处理搜索exe批处理调用jlink批处理准备jlink脚本 调用执行 环境&#xff1a;J-Flash V7.96g 平台&#xff1a;arm cortex-m3 准备批处理 搜索exe批处理 find_file.bat echo off:: 自动识别脚本名和路径 set "SCRIPT_DIR%~dp0" set &qu…

开发者黑板报#65

第65期 AI 谷歌Gemini 终于&#xff0c;GPT-4独霸时代终结了&#xff01; 过去一个月里&#xff0c;四款大模型横空出世&#xff0c;在各项关键基准测试中与GPT-4相匹敌&#xff0c;甚至更胜一筹。 谷歌Gemini 1.5突破100万个tokens&#xff0c;是GPT-4的近8倍&#xff0c…

【Docker】——安装镜像和创建容器,详解镜像和Dockerfile

前言 在此记录一下docker的镜像和容器的相关注意事项 前提条件&#xff1a;已安装Docker、显卡驱动等基础配置 1. 安装镜像 网上有太多的教程&#xff0c;但是都没说如何下载官方的镜像&#xff0c;在这里记录一下&#xff0c;使用docker安装官方的镜像 Docker Hub的官方链…

易舟云财务软件:开启云记账新时代

在数字化浪潮的推动下&#xff0c;财务管理正经历着深刻的变革。易舟云财务软件&#xff0c;作为一款引领时代的云记账平台&#xff0c;以其卓越的功能和便捷的操作&#xff0c;为企业带来了全新的财务管理体验。 云记账&#xff0c;财务管理的未来趋势 云记账&#xff0c;即基…

【紫光同创盘古PGX-Nano教程】——(盘古PGX-Nano开发板/PG2L50H_MBG324第十一章)模拟波形实验例程说明

本原创教程由深圳市小眼睛科技有限公司创作&#xff0c;版权归本公司所有&#xff0c;如需转载&#xff0c;需授权并注明出处&#xff08;www.meyesemi.com) 适用于板卡型号&#xff1a; 紫光同创PG2L50H_MBG324开发平台&#xff08;盘古PGX-Nano&#xff09; 一&#xff1a;…

Shopify 如何实现 Sticky 功能

Shopify 如何实现 Sticky 功能 介绍 在网页设计中&#xff0c;Sticky 功能是一种常见的技术&#xff0c;它使得网页上的元素在滚动时保持固定位置。这对于创建吸引人的用户体验和提高网站的可用性非常重要。Shopify 作为一个流行的电商平台&#xff0c;提供了丰富的功能和工具…

基于PHP的奶茶商城系统

有需要请加文章底部Q哦 可远程调试 基于PHP的奶茶商城系统 一 介绍 此奶茶商城系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;ajax实现数据交换。系统角色分为用户和管理员。系统在原有基础上添加了糖度的选择。 技术栈 phpmysqlajaxphpstudyvscode 二 功能 用户…

双层循环和循环语句

echo 打印 echo -n 表示不换行输出 echo -e 表示输出转义字符 echo \b 相当于退格键&#xff08;backspace&#xff09; echo \n 换行&#xff0c;相当于回车 echo \f 换行&#xff0c;换行后的新行的开头连着上一行的行尾 echo \t 相当于tab健 &#xff08;…

回归洛伦兹变换

现在再回到洛伦兹变换&#xff0c; 将其写成上角标表示惯性系的形式&#xff08;注意不是幂次&#xff09;&#xff0c; 并且认为洛伦兹变换中的两个方程的比例常数&#xff0c; 并不仅仅是因为虚数单位数量巨大导致的“误判”&#xff0c;虽然这也是说得通的。因为我们已经看到…

APP自动化测试-Appium常见操作之详讲

一、基本操作 1、点击操作 示例&#xff1a;element.click() 针对元素进行点击操作 2、初始化&#xff1a;输入中文的处理 说明&#xff1a;如果连接的是虚拟机&#xff08;真机无需加这两个参数&#xff0c;加上可能会影响手工输入&#xff09;&#xff0c;在初始化配置中…

外汇天眼:盈透证券为客户提供更丰富的欧洲衍生品交易渠道

电子交易巨头盈透证券&#xff08;纳斯达克代码&#xff1a;IBKR&#xff09;今日宣布&#xff0c;通过Cboe欧洲期权交易所&#xff08;CEDX&#xff09;新增欧洲股票期权和欧洲指数期货及期权。这一新增功能使得盈透证券的客户可以在单一统一平台上&#xff0c;除了股票、期权…

vivado SITE

描述 SITE是一个设备对象&#xff0c;表示许多不同类型的逻辑资源之一 可在目标Xilinx FPGA上获得。 SITE包括SLICE/CLB&#xff0c;它们是基本逻辑元件&#xff08;BEL&#xff09;的集合&#xff0c;如 查找表&#xff08;LUT&#xff09;、触发器、多路复用器&#xff0c;携…

【课程系列05】某心科技AI大模型微调实战营-应用篇

网盘链接 链接: https://pan.baidu.com/s/1oARULXsXn8frkqq4ZKHBLA --来自百度网盘超级会员v6的分享 课程收获 课程内容涉及大模型的介绍、Transformer、Encoder、高级微调技术、Alpaca、AdaLoRA、QLoRA、Prefix Tuning和Quantization等主题 课程截图

http缓存及http2配置

http缓存及http2配置极大提高了网页加载得速度 1.1 nginx安装 首先是需要安装nginx 去官网下载windows版本的安装包 nginx 命令 nginx start //启动 nginx -s stop nginx -s reload // 重新运行 tasklist /fi "imagename eq nginx.exe" //进程 把打包好的文件copy…