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

这篇具有很好参考价值的文章主要介绍了怎样在docker中使用macvlan创建可以独立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 
EOF

sysctl -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端口上。文章来源地址https://www.toymoban.com/news/detail-435164.html

到了这里,关于怎样在docker中使用macvlan创建可以独立ip访问的容器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • nacos注册中心服务注册后,使用服务名无法访问,使用ip+端口号可以访问

    环境: 名称 版本 springBoot 3.0.3 springCloud 2022.0.1 springCloudAlibaba 2022.0.0.0-RC1 nacos客户端 2.2.0 nacos中服务已经注册成功  并且使用RestTemplate进行了负载均衡,加入了@LoadBalanced注解,在使用服务名进行访问时出现以下错误 \\\"timestamp\\\": \\\"2023-03-03T03:57:50.409+00:00\\\",     \\\"status\\\": 500,     \\\"err

    2023年04月20日
    浏览(46)
  • 【Redis】解决Redis无法使用ip访问(127.0.0.1可以访问)的情况

    问题描述: 当Redis服务启动时,只可以使用127.0.0.1或者使用localhost进行连接,连本机的真实IP都无法访问。  问题原因及解决: ① 在redis.windows.config和redis.windows.service.config这两个配置文件中都有这么一行 protected-mode yes  这个有什么作用呢? 1.保护模式是一个安全保护层以避

    2024年01月19日
    浏览(38)
  • iis网站localhost(127.0.0.1)可以访问,使用本机局域网IP(192.168.4.*)不能访问

    在项目服务器上,用IIS发布网站之后,使用地址 http://localhost:10022/可以正常访问,换成http://127.0.0.1:10022/也可以正常访问,但把localhost改成服务器IP地址 http://192.168.4.64:10022/,却显示无法打开此地址 检查防火墙状态,如果防火墙处于开启状态,需要将网站对应端口进行入栈,

    2024年02月02日
    浏览(57)
  • 让Docker容器内的服务能够访问宿主机上的其他容器的端口,可以使用Docker的网络功能

    要让Docker容器内的服务能够访问宿主机上的其他容器的端口,可以使用Docker的网络功能。 Docker提供了多种网络驱动程序,例如 bridge 、 host 、 overlay 等。其中, bridge 是默认的网络驱动程序,它会在每个Docker容器内创建一个虚拟的网卡,同时会为每个容器分配一个独立的IP地址

    2024年02月14日
    浏览(36)
  • IP可以正常访问网站、域名无法正常访问

    问题: 域名解析都是都是正常的 可以ping通所指向的IP,端口也可以telnet通 但是就是无法正常访问平台,错误提示403 解决方案: 将tomcat里面的server配置文件中的defaultHost这个配置属性修改成网站访问的公网IP地址; 修改好了之后重启使用tomcat相应的程序即可

    2024年02月16日
    浏览(44)
  • Linux创建Macvlan网络

    最近在看Docker的网络,测试Macvlan部分时,发现Docker创建Macvlan与预期测试结果不一样。所以查阅了Linux下配置Macvlan,记录如下。 1.Linux Macvlan 2.图解几个与Linux网络虚拟化相关的虚拟网卡-VETH/MACVLAN/MACVTAP/IPVLAN 3.创建macvlan的命令 Centos7.9 net-tools:netstat命令 iputils:ping命令 telnet:

    2024年02月04日
    浏览(36)
  • 使用Docker本地搭建蚂蚁笔记并实现无公网IP远程访问

    本篇文章介绍如何使用Docker部署Leanote蚂蚁笔记,并且结合cpolar内网穿透实现公网远程访问本地笔记编辑并制作个人博客等。 Leanote 蚂蚁笔记是一款云笔记工具,蚂蚁笔记(又名LeaNote)就是一款国产开源的私有云笔记软件。它支持普通格式笔记、Markdown语法、专业数学公式编辑

    2024年04月10日
    浏览(43)
  • 如何在CentOS使用Docker部署Traefik服务并创建固定公网地址远程访问

    博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接 : 🔗 精选专栏 : 《面试题大全》 — 面试准备的宝典! 《IDEA开发秘籍》 — 提升你的IDEA技能! 《100天精通鸿蒙》 — 从Web/安卓到鸿蒙大师! 《100天精通Golang(基础入门篇)》 — 踏入

    2024年04月15日
    浏览(57)
  • 如何在群辉NAS使用Docker搭建容器魔方并实现无公网ip远程访问

    本文主要介绍如何在群辉7.2版本中使用Docker安装容器魔方,并结合Cpolar内网穿透工具实现远程访问本地网心云容器魔方界面. 容器魔方是由网心云推出的一款Docker容器镜像软件,通过简单安装后即可快速加入网心云共享计算生态网络,为网心科技星域云贡献带宽和存储资源,

    2024年02月02日
    浏览(65)
  • 全网最全,基于docker 创建的Minio容器配置Https 访问,不使用第三方服务

    1.需要一个域名ssl证书 阿里云有免费的,可以使用,推荐链接: https://yundunnext.console.aliyun.com/?spm=a2c4g.11186623.0.0.3efc4f2epEe03yp=cas#/overview/cn-hangzhou 2.使用docker的主机模式     --network=host 3.在宿主机上的  /etc/hosts  添加域名映射  127.0.0.1     minio.demo.com 4.将证书配置挂载到mini

    2024年04月13日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包