怎样在docker中使用macvlan创建可以独立ip访问的容器

news/2024/10/30 19:29:57/

怎样在docker中使用macvlan创建可以独立ip访问的容器

  • macvlan是什么
  • macvlan的小demo
    • 1.设置Centos7的端口转发功能
    • 2.在docker中创建macvlan
    • 3.创建docker容器时指定相应的ip地址

macvlan是什么

macvlan是一种网络虚拟化技术,它允许在一个物理网络接口上配置多个虚拟网络接口,每个虚拟网络接口都有自己独立的 MAC 地址,并且可以配置上 IP 地址进行通信。macvlan主要应用于Docker容器网络中,可以在一个主机上创建多个网络环境,每个环境都有自己独立的 MAC 地址,从而实现容器之间的隔离和通信。

在Docker中使用macvlan网络,需要先创建一个子网卡,然后将其添加到容器中,使其成为容器的网络接口。可以使用以下命令创建一个名为 macvlan 的子网卡:

docker network create -d macvlan --subnet=192.168.100.0/24 --gateway=192.168.100.1 -o parent=mac1 mac_net

接下来,将容器的 IP 地址和子网卡 MAC 地址绑定,使其可以通过 macvlan 子网卡进行通信。可以使用以下命令将容器的 IP 地址和子网卡 MAC 地址绑定:

docker run --net=macvlan -d -p 8000:8000 --name=my-app my-app

其中,–net=macvlan 表示使用macvlan网络,-d 表示后台运行容器,-p 8000:8000 表示将容器的端口 8000 暴露给宿主机,–name=my-app 表示为容器指定一个名称。

需要注意的是,macvlan 只支持 bridge 模式,而且只能在支持 host-only、global、docker0、macvlan 这些挂载类型的网络接口上使用。同时,macvlan 还需要配置 DNS 才能正常工作。

macvlan的小demo

1.设置Centos7的端口转发功能

cat >> /etc/sysctl.conf <<-'EOF'
net.ipv4.ip_forward=1
vm.max_map_count=655360 
EOFsysctl -p

/etc/sysctl.conf 文件中设置一些系统参数。以下是一些示例:

  1. net.ipv4.ip_forward:设置 IPv4 接口将数据包转发到其他 IP 地址的功能。这通常用于网络设置,如在 VPN 环境中保持连接。

  2. vm.max_map_count:设置虚拟内存的最大数量。这通常用于优化 CPU 使用率和系统资源的利用率。

设置完 /etc/sysctl.conf 文件后,您可以使用以下命令将更改应用到您的系统中:

sysctl -p

如果您的 Linux 发行版不同,请使用相应的命令。

2.在docker中创建macvlan

docker network create -d macvlan \
--subnet=192.168.31.0/24 \
--ip-range=192.168.31.0/24 \
--gateway=192.168.31.1 \
-o parent=ens33 \
macvlan31

这段代码是使用docker network创建一个名为macvlan31的桥接网络。

解释如下:

  1. -d 表示使用Docker daemon作为网络的后台进程。

  2. –subnet 指定了网络的子网掩码,这里是192.168.31.0/24。

  3. –ip-range 指定了网络的IP地址范围,这里是192.168.31.0/24。

  4. –gateway 指定了网络的网关地址,这里是192.168.31.1。

  5. -o parent 表示创建网络时的父容器是ens33。

整句的含义是:创建一个名为macvlan31的桥接网络,子网掩码为192.168.31.0/24,IP地址范围为192.168.31.0/24,网关地址为192.168.31.1,网络容器是ens33,该网络将使用macvlan命名空间。

3.创建docker容器时指定相应的ip地址

docker -itd --restart aways --network macvlan31 --ip=192.168.31.240 -p 80:80 httpd

这段代码是使用Docker运行一个名为httpd的容器,并将容器绑定到一个名为macvlan31的网络上,同时指定了IP地址为192.168.31.240,端口号为80,并将容器的80端口映射到主机的80端口上。

这段代码的主要目的是:

  • 使用macvlan31作为主网络(如果可以运行MacVlan31),将容器连接到该网络。

  • 指定容器的IP地址为192.168.31.240。

  • 使用主机的80端口和IP地址的前4位/16为掩码,将容器的80端口映射到主机的80端口上。

这样,主机可以访问容器的80端口并访问主机上的Web应用程序或其他资源。同时,容器可以访问主机上的其他资源,并将其映射到自己的80端口上。


http://www.ppmy.cn/news/60374.html

相关文章

在体育新闻文本中提取关键词可以使用什么技术

在体育新闻文本中提取关键词可以使用以下技术&#xff1a; 1. 领域词典&#xff1a; 通过构建体育领域的词汇表&#xff0c;将其中的词语作为关键词&#xff0c;可以较好地提取体育新闻中的关键词。 就当下的研究情况&#xff0c;国内外有哪些体育领域的词汇表http://t.csdn…

单机版部署Redis详细教程

概述 大多数企业都是基于Linux服务器来部署项目&#xff0c;而且Redis官方也没有提供Windows版本的安装包。因此课程中我们会基于Linux系统来安装Redis. 此处选择的Linux版本为CentOS 7. Redis的官方网站地址&#xff1a;https://redis.io/ 单机安装Redis 1.1.安装Redis依…

如何批量修改删除html文件中的标签属性

最近工作中遇到一个问题&#xff0c;一份html文档因为内容里面的样式标签过多导致文件整体过大。 这些描述标签不是必须的&#xff0c;现在需要优化删除掉这些标签从而减小文件体积。 对于这种批量修改删除的任务&#xff0c;我们首先想到的就是使用编辑器处理。 编辑html文…

ESP32-设备驱动TMP102数字温度传感器驱动

TMP102数字温度传感器驱动 文章目录 TMP102数字温度传感器驱动1、TMP102介绍2、硬件准备3、软件准备4、驱动实现1、TMP102介绍 TMP102 器件是一款数字温度传感器,非常适合需要高精度的 NTC/PTC 热敏电阻更换。 该器件提供 0.5C 的精度,无需校准或外部组件信号调理。 器件温度…

InnoDB 与MyISAM 的区别

MyISAM和InnoDB都是Mysql里面的两个存储引擎。 在Mysql里面&#xff0c;存储引擎是可以自己扩展的&#xff0c;它的本质其实是定义数据存储的方式以及数据读取的实现逻辑。 不同存储引擎本身的特性&#xff0c;使得我们可以针对性的选择合适的引擎来实现不同的业务场景。从而获…

数据库基础操作

数据库 1. 概述2. 详述3. 创建数据库表4. 增加数据库记录5. 修改和删除数据库记录6. 修改和删除数据库表7.非外键约束8.外键约束9.外键策略10.杂项-快速拷贝表11.表的准备12.单表查询13.where子句14. 单行多行函数15. group by 和 having 1. 概述 数据库的基础操作主要分为六块…

Vue2对Axios封装使用

安装排错流程&#xff1a; 1.安装npm i axios 安装是否成功 2.创建 src\utils\require.js 文件夹 axios.create({ }) // 指定baseURL http://127.0.0.1:8080/.... 3.导出 实例化的axios 4.引入到main.js 挂在到Vue实例上 5. import requset from "../utils/requi…

qt c++11 range-based for,foreach,for each。qt推荐使用 range-based for

标题Qt 中的遍历语法 在 C 中&#xff0c;遍历容器是常见的编程需求。而在 Qt 中&#xff0c;我们通常会使用 foreach 宏来遍历容器&#xff0c;例如&#xff1a; QList<int> list { 1, 2, 3 }; foreach (int value, list) {// 对容器中的元素进行处理操作 }上面的代码…