V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
vergilgao
V2EX  ›  Docker

2025 年了,感觉 podman 已经比 docker 好用太多了,就差一个杀手级的 GUI 配置了

  •  
  •   vergilgao · 3 天前 · 5356 次点击

    我现在是用 Fedora 部署 podman 和 docker 比,podman 带来了

    • 可固定 mac 地址,通过 dhcp 获取 ip (netavark)
    • 使用 systemd 管理容器 daemon (quadlet)
    • 可自动拉取更新镜像 (quadlet)
    • 完备的 rootless 容器化支持
    • nftables 防火墙支持 我是直接写 quadlet 配置文件
    [Unit]
    Description=mqtt broker server
    After=network-online.target
    Wants=network-online.target
    Before=shutdown.target
    
    [Container]
    HostName=mqtt-broker
    AutoUpdate=registry
    Image=docker.io/eclipse-mosquitto:latest
    Network=macvlan.network
    PodmanArgs=--mac-address XX:XX:XX:XX:XX:XX
    Volume=/srv/docker/root/volumes/mqtt/data:/mosquitto/data
    Volume=/srv/docker/root/volumes/mqtt/config:/mosquitto/config
    Volume=/srv/docker/root/volumes/mqtt/log:/mosquitto/log
    
    [Service]
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    

    然后容器就以一个 systemd 的服务的形式运行起来了。

    49 条回复    2025-09-01 11:50:40 +08:00
    gococonut
        1
    gococonut  
       3 天前
    编排方便吗?
    jamos
        2
    jamos  
       3 天前   ❤️ 1
    docker+portainer 很方便的
    mbeoliero123
        3
    mbeoliero123  
       3 天前
    使用 systemd 管理容器 daemon (quadlet)
    楼主这有管理微服务吗?最近有这种需求
    kapr1k0rn
        4
    kapr1k0rn  
       3 天前
    gui 不是有 podman desktop 吗
    vergilgao
        5
    vergilgao  
    OP
       3 天前
    @gococonut [pod]man 自然是有 pod 的,我个人是觉得 pod 要比 compose 设计思想更先进。
    vergilgao
        6
    vergilgao  
    OP
       3 天前
    @kapr1k0rn 我其实是指的是 nas 系统集成的 webui 不是 desktop 也不是 portainer/dockerman 这种。从我目前使用的感受来说,webui 配置好之后,生成 quadlet 文件然后交给 systemd 来运行更符合 podman 的设计哲学。
    COW
        7
    COW  
       3 天前
    进程多了感觉不太好管理,由于是无 daemon ,比如某些 systemd 进程关了,用 podman ps 就查不到了,缺个好用的 工具支持 systemctl + podman ps 筛选的
    hefish
        8
    hefish  
       3 天前   ❤️ 2
    大家用我推荐, 我还是继续 docker 。
    hwdq0012
        9
    hwdq0012  
       3 天前
    没看到心动的点,好像 nvidia 驱动有限制 rootless
    有人在上面跑 ai 训练模型吗, 和 docker 用 nvidia-docker2 比有什么区别
    还有他的容器镜像方案是什么 ,docker 可以用 harbor 做 private registry ,Podman 是用什么
    w568w
        10
    w568w  
       3 天前
    我觉得 Quadlet 不太好的地方:

    1. 从 Yaml 换成了语法表达力更弱的 ini-like ;
    2. 不是 systemd 第一方支持,依然需要开机运行 generator 来生成 .service 文件;
    3. 因为强行贴近 systemd 的 ini 配置风格,原本一个 compose.yaml 能配置完的服务栈和网络,现在必须得七八个文件。

    我自己的话还是主要用 compose.yaml + podman-compose 来跑。只有少数依赖项不复杂且固化的服务(比如系统全局都要用的代理软件 image ),才考虑写成 quadlet 来开机自启。
    dzdh
        11
    dzdh  
       3 天前
    @vergilgao #6 ln -s /usr/bin/podman/usr/bin/docker 就好
    infinityv
        12
    infinityv  
       3 天前 via iPhone
    dockerd 不也是 systemd 管理的吗
    vergilgao
        13
    vergilgao  
    OP
       3 天前
    @dzdh docker 没有 pod 啊
    cheng6563
        14
    cheng6563  
       3 天前
    裸 pod 不套层 deployment 真的能用吗
    vergilgao
        15
    vergilgao  
    OP
       3 天前
    @infinityv 不是一个概念,dockerd 是 docker 的 daemon ,podman 没有 daemon ,这里说的 systemd 管理 podman 的 daemon 其实是 systemd 直接作为 container 的 daemon
    vergilgao
        16
    vergilgao  
    OP
       3 天前
    @cheng6563 家用肯定不可能用 k8s ,k3s 的话,我觉得还不如直接用 podlet 让 systemd 自己来了。CoreOS 那一套对于家用来说也是过于复杂了。所以我觉得直接套一个好用的 webui 管理 quadlet 文件,反而是一个非常优秀的 nas 上 GUI 容器化的方案。
    Geon97
        17
    Geon97  
       3 天前
    其实理论上来讲,podman 比 docker 相对更安全一些
    66z
        18
    66z  
       3 天前   ❤️ 1
    人生苦短,我用 Docker
    yannxia
        19
    yannxia  
       3 天前   ❤️ 1
    入门用户体验起来没什么区别
    重量用户可能都去用 kube ,不太关心底下了
    大概就是那种重度使用单机的会用,那么确实范围太小了
    yayoi
        20
    yayoi  
       3 天前   ❤️ 1
    以前用过,podman-compose 和 docker compose 有些行为是不一致的,现在大部分镜像文档还是以 docker 为准.podman 很难用.至于 rootless 之类的特性对于个人使用没啥大用处.但是企业都用 k8s.所以 podman 是个尴尬的东西,个人是没有动力去用这个的
    cslive
        21
    cslive  
       3 天前
    cockpit 管理 podman ,都是一家出的
    chenluo0429
        22
    chenluo0429  
       3 天前 via Android
    我对 systemd 过敏,让我用别人写好的现成服务可以,让我自己写配置,我就十分不爽
    yuhangch
        23
    yuhangch  
       3 天前
    @chenluo0429 交给 AI 呗
    cryboy007
        24
    cryboy007  
       3 天前
    公司用什么我就用什么。个人就用自己熟悉的.都是工具老比来比去的没意思
    weijancc
        25
    weijancc  
       3 天前
    无 daemon 这玩意就不值得吹
    cyp0633
        26
    cyp0633  
       3 天前
    起码不会把我的 nftables 规则搞乱
    SakuraYuki
        27
    SakuraYuki  
       3 天前
    觉得他好用的不需要 gui ,需要 gui 的感受不出区别
    kennylam777
        28
    kennylam777  
       3 天前
    都是 k8s 能完成的東西, 唯一要 systemd 的只有 kubelet, k3s control-pane 的話可能還有 etcd/api-server, DHCP 方面是配 multus 就能完成的東西

    pod 在 docker compose 上作用不明顯, 只是一堆共用 network 的 containers, 但 docker 本來是 OCI 的能被 k8s 調用成 pod 的樣子

    而且 k8s 現在配合的 container engine 是 containerd, 至少這東西和 docker 有也有 nvidia container toolkit 等大廠 GPU 的支持

    我仍然覺得直接學 k3s 比較有用
    anubu
        29
    anubu  
       3 天前
    拿来玩还是挺不错的,也能扩展对容器生态的认识。不过从技能性价比角度,nerdctl/containerd 感觉更好一些。向下和 docker/docker compose 几乎无缝兼容,向上维护 kubelet/containerd 这一套也能复用经验。

    daemon 这个问题挺难说,有时候觉得 docker daemon 还挺好用的。在本地 vscode 编辑完 compose 文件,直接 docker context 连接到远程 ssh 暴漏的 docker daemon 就可以启动服务。相比拷贝 compose 文件到服务端,方便很多。当然,无 daemon 时,vscode remote ssh 也能应付这些场景。
    zed1018
        30
    zed1018  
       3 天前
    我感觉有点鸡肋,属于是生产环境有更好的方案,本地开发也用不上的功能。
    COW
        31
    COW  
       3 天前
    @anubu 似乎你在用 nerdctl 和 vscode ,但目前 containers 插件只支持 docker 和 podman 两种 runtime ,是怎么处理的?
    yanqiyu
        32
    yanqiyu  
       3 天前
    @vergilgao #6 webui 的话有 cockpit, 不过好像不兴创建 podlet
    yanqiyu
        33
    yanqiyu  
       3 天前
    对我来说 podman 真正的不可替代的特性是借助 fork-exec 的模型支持 pass fd ,然后就可以让容器也能走 socket activation 来响应请求。

    这样一些容器甚至了一 network=none 也能提供网络服务
    yb2313
        34
    yb2313  
       3 天前
    没被坑过不知道痛, 喜欢折腾就玩吧, 觉得折腾有意思当然觉得好, 我自己的经验是以后再也不乱折腾了, 坑死我了
    yanqiyu
        35
    yanqiyu  
       3 天前
    @anubu podman.socket 也可以启动一个 daemon (行为也很大程度上兼容 docker 的 socket 我记得),并且 podman system connection [add,list...] 可以添加直接暴露的 http 或者 ssh endpoint ,这样在远程机器上 podman -c <remote> ... 就等价于在远程执行了
    0312birdzhang
        36
    0312birdzhang  
       3 天前
    等一条帖子:podman 太坑了,换回了 docker
    shcsc
        37
    shcsc  
       3 天前
    家里的 Linux ,我就是用 podman 跑服务
    Proposal
        38
    Proposal  
       3 天前
    没有看到对 docker 的替代性...
    pulutom40
        39
    pulutom40  
       3 天前 via iPhone
    说得好,个人使用继续 docker ,珍爱生命,远离折腾
    githmb
        40
    githmb  
       3 天前
    这东西离线安装后运行不了啊,配置太多了,经常缺东西,找齐也全是启动问题
    DefoliationM
        41
    DefoliationM  
       3 天前 via Android
    用过一段时间,但是备份比较麻烦,最后还是 terraform+k8s 了,方便管理配置。
    skvi
        42
    skvi  
       3 天前 via Android
    尽管如此,但是我还是 docker ,又不是不能用,主要是 compose 对我来说已经足够简单、便捷。没有折腾的理由哈哈
    skvi
        43
    skvi  
       3 天前 via Android
    btw qnap
    anubu
        44
    anubu  
       3 天前
    @COW vscode 主要用于 yaml 文件编辑和调起 wsl 当终端用。容器插件用的很少,偶尔看看 docker 日志,没有 nerdctl 和 vscode 集成使用的经验。
    WhatTheBridgeSay
        45
    WhatTheBridgeSay  
       3 天前
    工程实践的话我还是优选 docker ,除了捏着鼻子给 ufw 打补丁不然 ufw 创建的主机防火墙规则会被绕过以外没有缺点。
    podman 很好我也知道,但是还是仅适合自己玩,docker 最有价值的从来不在于装在你机器里的那个二进制和 daemon ,而是 docker hub
    xycost233
        46
    xycost233  
       2 天前
    一堆 compose ,切换成本有点高了。。不太干试
    podman 支持 macvlan 网络么,能使用 traefik 自动代理不
    johnniang
        47
    johnniang  
       2 天前 via Android
    最近我更喜欢用 Docker Swarm 了。
    witherzuo
        48
    witherzuo  
       2 天前 via Android
    podman 什么都好,但在 Windows 和 macOS 上一直有个问题,podman pull 拉取镜像时不会显示流式传输进度,Linux 上正常……
    wweir
        49
    wweir  
       16 小时 2 分钟前
    还是更喜欢 nerdctl 一些。
    docker 作为事实标准,并且整体往 k8s 上迁移的时候,另外学一套交互命令的成本就很高了。
    这时候,兼容 docker 才是第一要义,其它都属于花头
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   928 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 19:53 · PVG 03:53 · LAX 12:53 · JFK 15:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.