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

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

  •  
  •   vergilgao · 24 天前 · 6019 次点击

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

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

    我自己的话还是主要用 compose.yaml + podman-compose 来跑。只有少数依赖项不复杂且固化的服务(比如系统全局都要用的代理软件 image ),才考虑写成 quadlet 来开机自启。
    dzdh
        11
    dzdh  
       24 天前
    @vergilgao #6 ln -s /usr/bin/podman/usr/bin/docker 就好
    infinityv
        12
    infinityv  
       24 天前 via iPhone
    dockerd 不也是 systemd 管理的吗
    vergilgao
        13
    vergilgao  
    OP
       24 天前
    @dzdh docker 没有 pod 啊
    cheng6563
        14
    cheng6563  
       24 天前
    裸 pod 不套层 deployment 真的能用吗
    vergilgao
        15
    vergilgao  
    OP
       24 天前
    @infinityv 不是一个概念,dockerd 是 docker 的 daemon ,podman 没有 daemon ,这里说的 systemd 管理 podman 的 daemon 其实是 systemd 直接作为 container 的 daemon
    vergilgao
        16
    vergilgao  
    OP
       24 天前
    @cheng6563 家用肯定不可能用 k8s ,k3s 的话,我觉得还不如直接用 podlet 让 systemd 自己来了。CoreOS 那一套对于家用来说也是过于复杂了。所以我觉得直接套一个好用的 webui 管理 quadlet 文件,反而是一个非常优秀的 nas 上 GUI 容器化的方案。
    Geon97
        17
    Geon97  
       24 天前
    其实理论上来讲,podman 比 docker 相对更安全一些
    66z
        18
    66z  
       24 天前   ❤️ 1
    人生苦短,我用 Docker
    yannxia
        19
    yannxia  
       24 天前   ❤️ 1
    入门用户体验起来没什么区别
    重量用户可能都去用 kube ,不太关心底下了
    大概就是那种重度使用单机的会用,那么确实范围太小了
    yayoi
        20
    yayoi  
       24 天前   ❤️ 1
    以前用过,podman-compose 和 docker compose 有些行为是不一致的,现在大部分镜像文档还是以 docker 为准.podman 很难用.至于 rootless 之类的特性对于个人使用没啥大用处.但是企业都用 k8s.所以 podman 是个尴尬的东西,个人是没有动力去用这个的
    cslive
        21
    cslive  
       24 天前
    cockpit 管理 podman ,都是一家出的
    chenluo0429
        22
    chenluo0429  
       24 天前 via Android
    我对 systemd 过敏,让我用别人写好的现成服务可以,让我自己写配置,我就十分不爽
    yuhangch
        23
    yuhangch  
       24 天前
    @chenluo0429 交给 AI 呗
    cryboy007
        24
    cryboy007  
       24 天前
    公司用什么我就用什么。个人就用自己熟悉的.都是工具老比来比去的没意思
    weijancc
        25
    weijancc  
       24 天前
    无 daemon 这玩意就不值得吹
    cyp0633
        26
    cyp0633  
       24 天前
    起码不会把我的 nftables 规则搞乱
    SakuraYuki
        27
    SakuraYuki  
       24 天前
    觉得他好用的不需要 gui ,需要 gui 的感受不出区别
    kennylam777
        28
    kennylam777  
       24 天前
    都是 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  
       24 天前
    拿来玩还是挺不错的,也能扩展对容器生态的认识。不过从技能性价比角度,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  
       24 天前
    我感觉有点鸡肋,属于是生产环境有更好的方案,本地开发也用不上的功能。
    COW
        31
    COW  
       24 天前
    @anubu 似乎你在用 nerdctl 和 vscode ,但目前 containers 插件只支持 docker 和 podman 两种 runtime ,是怎么处理的?
    yanqiyu
        32
    yanqiyu  
       24 天前
    @vergilgao #6 webui 的话有 cockpit, 不过好像不兴创建 podlet
    yanqiyu
        33
    yanqiyu  
       24 天前
    对我来说 podman 真正的不可替代的特性是借助 fork-exec 的模型支持 pass fd ,然后就可以让容器也能走 socket activation 来响应请求。

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