首页 > 其他分享 >Docker macvlan

Docker macvlan

时间:2022-12-07 23:26:21浏览次数:80  
标签:容器 -- ip 192.168 macvlan Docker docker

默认情况下docker使用bridge网络,这是一个私有网络,只能在host和container之间互通,如果发布服务,需要使用端口映射的方式来解决,比如一个nginx容器要想对外提供服务则在容器启动时指定参数-p 80:80,然后使用host主机的ip加端口即可访问容器。这在大部分场景下都够用了,但是总有一些需求无法满足,比如如果多个容器都需要使用80端口,或者只使用ip通信的网络应用,macvlan可以做到。

macvlan

macvlan是可以虚拟mac地址,单独的macvlan存在意义不大,结合docker给每一个容器都虚拟一个mac地址,这样每个容器在局域网中都相当于一个独立的主机。

创建

docker network create -d macvlan \
  --subnet=192.168.10.0/24 \
  --ip-range=192.168.10.32/28 \
  --gateway=192.168.10.1 \
  --aux-address="my-router=192.168.32.33" \
  -o parent=eth0 macnet
  • subnet:子网
  • ip-range:docker自动分配ip范围,防止和局域网内其他主机重复
  • gateway:网关
  • aux-address:docker分配ip时排除的ip(这个ip有其他用途)
  • parent:父接口,也就是host主机的物理网卡
    以上参数强烈建议都指定,可以减少不必要的麻烦

创建容器

docker run -d --net=macnet --ip=192.168.10.34 --name nginx nginx
  • --net:指定关联上面创建的macvlan网络
  • --ip:指定ip,可以不指定(让docker自动分配),也可以去容器里修改

经过上面操作运行了一个nginx容器,此容器拥有一个虚拟的mac地址,在网内相当于一个真实的主机,任何网内的其他主机(非host)都可以通过为其指定的ip访问该容器。
如果使用相同的方法运行多个nginx容器,并不需要每个容器指定不同的端口,因为网络namespace是隔离的。

但是目前有个问题:host和container是无法互通的,因为是macvlan的原因,同一个网口的流量是无法回传的,除非在外部有一个支持VEPA或者VN-Link的交换机。

以上命令中的网络接口、ip请根据实际情况进行调整
https://docs.docker.com/network/macvlan/

标签:容器,--,ip,192.168,macvlan,Docker,docker
From: https://www.cnblogs.com/sjkzy/p/16964869.html

相关文章

  • Docker学习笔记九:Docker数据卷知识【重要】
    介绍 目的数据卷(DataVolumes)是宿主机中的一个目录或文件,数据卷的设计目的就是数据的持久化,完全独立于容器的生存周期。一个数据卷可以被多个容器同时挂载,一个容器也......
  • 快速安装docker
    本方法适用于红帽系的linux#安装yum源yum-config-manager--add-repohttps://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repoyummakecachefast#安装......
  • docker-compose的命令补全
    找文件docker-compost官方github地址https://github.com/docker/compose切换master分支点击复制在/etc/bash_completion.d/下新建docker-compose文件,保存退出后......
  • ubuntu安装docker
    sudoaptupdatesudoaptinstallapt-transport-httpsca-certificatescurlsoftware-properties-commoncurl-fsSLhttps://download.docker.com/linux/ubuntu/gpg......
  • dockerfile 缩减镜像
    title:Dockerfile缩减镜像技巧categories:-dockersummary:Dockerfile缩减镜像技巧Dockerfile缩减镜像技巧构建上下文执行dockerbuild命令时,当前的工作......
  • docker部署项目
    (文章目录)<hrstyle="border:solid;width:100px;height:1px;"color=#000000size=1">前言<fontcolor=#999AAA>为了提高服务器的利用率,且便于项目部署及发布,服务......
  • docker部署项目
    @目录前言一、下载安装docker:1.前提工作1.1查看linux版本1.2yum包更新到最新1.3安装工具包1.4设置yum源并更新yum包索引2.安装docker2.1安装docker-ce2.2启动docker2......
  • ​Docker网络实现的基本原理
    Docker的网络实现基本原理是利用了Linux的网络命令空间和虚拟网络设备,因为Linux通过在内核中进行数据复制来实现虚拟接口之间的数据转发,即发送接口的发送缓存中的数据包将......
  • Docker网络实现的基本原理
    Docker的网络实现基本原理是利用了Linux的网络命令空间和虚拟网络设备,因为Linux通过在内核中进行数据复制来实现虚拟接口之间的数据转发,即发送接口的发送缓存中的数据包......
  • docker image inspect image:tag docker stats --no-stream
    dockerstatsnginx--no-stream--format"{{json.}}"[root@localhost12-7]#dockerimageinspectnew_img:v1|grep"qinrui""whiletrue;doech......