如何使用 podman 复制 docker macvlan 网络?

     2023-03-17     193

关键词:

【中文标题】如何使用 podman 复制 docker macvlan 网络?【英文标题】:How do I replicate a docker macvlan network with podman? 【发布时间】:2020-04-18 06:24:00 【问题描述】:

我在用于托管 Unifi 网络控制器应用程序的 Fedora 工作站上有一个可工作的 docker 实现。我使用 macvlan 为控制器分配静态 IP。创建macvlan的docker network命令是:

docker network create -d macvlan -o parent=enp8s0  --subnet 192.168.110.0/24 --gateway 192.168.110.1 --ip-range 192.168.110.224/27 --aux-address 'host=192.168.110.225' unifinet

控制器运行的容器被分配一个静态ip:

docker run --rm --init --network unifinet --ip 192.168.110.226 ....

我想用 podman 作为替代来实现它。是否有有用的在线教程解释如何使用 podman 使用的 CNI 的实现?特别是macvlan插件?我无法决定是否应该使用静态 IPAM 插件或本地主机 IPAM 插件。

Brent Baude 的 Leasing Routable IP addresses with Podman containers 是一个良好的开端,但专注于使用 dhcp IPAM 插件。

谢谢你

【问题讨论】:

【参考方案1】:

额外的测试和阅读 libpod github 中的一些问题 cmets 导致了以下解决方案,该解决方案定义了一个 macvlan 并使用静态 IPAM 插件分配一个静态 IP。

在 /etc/cni/net.d 中创建一个名为 90-unifinet.conflist 的文件:


    "cniVersion": "0.4.0",
    "name": "unifinet",
    "plugins": [
    
            "type": "macvlan",
            "master": "enp8s0",
            "ipam": 
                "type": "static",
        "addresses": [
            
                              "address": "192.168.110.226/24",
                          "gateway": "192.168.110.1"
            
        ],
                "routes": [
                        "dst": "0.0.0.0/0" 
                ],
               "dns":  
                       "nameservers": ["192.168.110.1"]
               
            
        
    ]

然后以下将起作用

podman run -it --rm --network unifinet  alpine ping 8.8.8.8 -c 4

【讨论】:

【参考方案2】:

我看到您有一个适合您的解决方案,但我会建议使用host-local IPAM 插件,而不是static(这需要您明确分配地址)。相应的配置可能如下所示:


  "cniVersion": "0.3.0",
  "name": "unifinet",
  "plugins": [
    
      "type": "macvlan",
      "mode": "bridge",
      "master": "eth0",
      "ipam": 
        "type": "host-local",
        "ranges": [
          [
            "subnet": "192.168.110.0/24",
            "rangeStart": "192.168.110.226",
            "rangeEnd": "192.168.110.255",
            "gateway": "192.168.110.1"
          ]
        ],
        "routes": [
          "dst": "0.0.0.0/0"
        ]
      
    
  ]

就像您原来的docker network create 命令一样,这将在 192.168.110.224/27 范围内分配 192.168.110.0/24 网络上的地址(我实际上指定了 192.168.110.226 的范围开始,这将避免分配你用--aux-address保留的192.168.110.225地址)。


您可以使用podman run--ip 参数来启动具有特定IP 的容器。鉴于上面定义的网络,我们可以运行:

podman run --net unifinet --ip 192.168.110.230 ...

【讨论】:

谢谢。我在静态 ipam 插件之前尝试过 host-local,但无法找到一种将 IP 显式分配给容器的方法。特定应用需要固定 IP。如果有办法实现这一点,我会非常感兴趣。 就像docker run 一样,podman run 有一个--ip 参数,可以让你为容器分配一个特定的IP。该地址必须来自网络定义的有效范围。 非常感谢。我以为我已经尝试过了并收到了错误。我会试试你的解决方案。顺便说一句 - 我想我已经记住了你在 docker 和 macvlan 上的古怪博客文章。谢谢你写它。 应该注意--ip 标志在某些版本的 containernetworking-plugins 上是错误的,即 Red Hat/CentOS 附带的那个。 CentOS8 Stream 上的 0.8.6-2 似乎可以工作。

docker大势已去,podman即将崛起(代码片段)

...是Podman?Podman和Docker的主要区别是什么?Podman的使用与docker有什么区别?Podman常用命令容器镜像部署PodmanPodman加速器使用Podman运行一个容器列出运行的容器检查正在运行的容器查看一个运行中容器的日志查看一个运行... 查看详情

centos8的podman容器

参考技术A  笔者在使用CentOS8时安装docker失败,于是发现CentOS8自带容器podman,podman的使用方法和docker类似,命令行基本相同。同时和docker相比,podman是无守护程序容器引擎(Daemonless),不能通过守护进程去实现自动重启... 查看详情

docker大势已去,podman即将崛起……

来源:https://blog.csdn.net/qq_48289488/article/details/121905018Podman简介什么是Podman?Podman是一个开源的容器运行时项目,可在大多数Linux平台上使用。Podman提供与Docker非常相似的功能。正 查看详情

Podman 中的 Podman,类似于 Docker 中的 Docker?

】Podman中的Podman,类似于Docker中的Docker?【英文标题】:PodmaninPodman,similartoDockerinDocker?【发布时间】:2021-02-0702:04:20【问题描述】:有没有办法在Podman中运行Podman,类似于在Docker中运行Docker?这是我的Dockerfile的sn-p,它强烈基于a... 查看详情

使用podman创建debian/centos/ubuntu系统容器

Podman 是一个无守护程序、开源的Linux原生工具,旨在使用OpenContainersInitiative轻松查找、运行、构建、共享和部署应用程序(OCI) Containers 和 ContainerImages 。Podman提供了任何使用过Docker的人都熟悉的命令行界面(CLI&nb... 查看详情

使用podman创建debian/centos/ubuntu系统容器

Podman 是一个无守护程序、开源的Linux原生工具,旨在使用OpenContainersInitiative轻松查找、运行、构建、共享和部署应用程序(OCI) Containers 和 ContainerImages 。Podman提供了任何使用过Docker的人都熟悉的命令行界面(CLI&nb... 查看详情

新手带你手把手搭建podman

...程序在多个核心上占用100%CPU资源,并导致主机无法正常使用。” 而Podman不需要守护程序,也不需要访问root权限组。Podman能够替代大部分子命令(run,push,pull等等)。由于不需要守护程序,而且会利用用户命名空间模拟容器中... 查看详情

docker大势已去,podman即将崛起!(代码片段)

...一个开源的容器运行时项目,可在大多数Linux平台上使用。Podman提供与Docker非常相似的功能。正如前面提到的那样࿰ 查看详情

day02docker学习-2,podman

​1.almaLinux系统安装见:​​https://blog.51cto.com/u_15506674/5857852​​2.almaLinux使用podman容器安装centos7.9过程解析类似​​docker安装centos7.9​​略过2.1下载镜像,启动容器,登入容器[root@192~]#podmanpullcentos:centos7.9.2009Resolved"centos" 查看详情

centos8安装docker出现podman冲突(代码片段)

问题原因分析:Centos8使用yuminstalldocker-y时,默认安装的是podman-docker软件先删掉podman依赖yumerasepodmanbuildahcurlhttps://download.docker.com/linux/centos/docker-ce.repo-o/etc/yum.repos.d/docker-ce.repo#http 查看详情

podman(代码片段)

...一个开源的容器运行时项目,可在大多数Linux平台上使用。Podman提供与Docker非常相似的功能。正如前面提到的那样,它不需要在你的系统上运行任何守护进程,并且它也可以在没有root权限的情况下运行。Podman可以管理... 查看详情

使用podman

#使用Podman使用Podman非常的简单,Podman的指令跟Docker大多数都是相同的。下面我们来看几个常用的例子:运行一个容器[root@localhost~]#podmanrun-dit--nameb1centosb4ab9b6e8fc5e00f82b3 查看详情

podman使用国内阿里镜像源(centos8)

Podman是一个开源的容器管理工具,语法兼容Docker,但是某些方面比原生Docker命令更好用,比如能够以非root用户的身份去运行容器,而且不需要守护进程。Podman引入了一个注册表的概念,注册表就是包括​​docker.io​​在内的多... 查看详情

podman容器技术的日常使用

Podman容器技术的日常使用一、podman介绍1.podman介绍2.podman官网3.podman最新版本介绍二、podman安装1.检查系统版本2.安装podman3.查看podman版本三、docker与podman区别四、podman基本命令五、镜像的基本操作1.配置加速器2.搜索镜像3.拉取镜像... 查看详情

常见的容器仓库

最近在使用podman,相对于docker优点很明显,不需要root。Podman 是一个无守护程序、开源的Linux原生工具,旨在使用OpenContainersInitiative轻松查找、运行、构建、共享和部署应用程序(OCI) Containers 和 ContainerImages 。Pod... 查看详情

常见的容器仓库

最近在使用podman,相对于docker优点很明显,不需要root。Podman 是一个无守护程序、开源的Linux原生工具,旨在使用OpenContainersInitiative轻松查找、运行、构建、共享和部署应用程序(OCI) Containers 和 ContainerImages 。Pod... 查看详情

centos8安装docker出现podman冲突(代码片段)

问题原因分析:Centos8使用yuminstalldocker-y时,默认安装的是podman-docker软件先删掉podman依赖yumerasepodmanbuildahcurlhttps://download.docker.com/linux/centos/docker-ce.repo-o/etc/yum.repos.d/docker-ce.repo#http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.r... 查看详情

podman用啥语言开发的

...司推出的容器管理工具,它的定位就是docker的替代品,在使用上与docker的体验类似。podman源于CRI-O项目,可以直接访问OCI的实现(如runC),流程比docker要短。 查看详情