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

只部署一个容器,应该用 docker-compose 还是 docker cli?

  •  
  •   yodhcn ·
    yodhcn · 355 天前 · 3457 次点击
    这是一个创建于 355 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在"部署容器"上,docker-compose 是 docker cli 更好的替代吗?

    在使用 docker-compose 过程中,发现一个不习惯的地方:

    • 用 docker-compose 创建单个容器,总是会生成一个名为 "项目名 _default" 的 network ,即使我只想让容器运行在最简单的 bridge 类型网络,这让 network 列表看起来乱糟糟的;
    • 而使用 docker cli 部署的容器就不会产生额外的命名 network 。
    27 条回复    2024-05-21 13:03:55 +08:00
    whetherTsmile
        1
    whetherTsmile  
       355 天前
    compose 也可以添加 networks:bridge
    liangdi
        2
    liangdi  
       355 天前
    歪个楼,小型部署我们已经全面转向 podman 了
    SenLief
        3
    SenLief  
       355 天前
    compose 你不配置网络,默认就是 bridge 的网络,生成的也是基于 bridge 的。
    yodhcn
        4
    yodhcn  
    OP
       355 天前
    @whetherTsmile #1 谢谢提醒,这下清净多了

    添加 network_mode: bridge 到您的每项服务 docker-compose.yml 将阻止 compose 创建网络。
    如果任何服务未配置此网桥(或主机),则会创建一个网络。
    https://stackoverflow.com/questions/43754095/how-to-join-the-default-bridge-network-with-docker-compose-v2
    DKingAlpha
        5
    DKingAlpha  
       355 天前   ❤️ 3
    compose 的主要优势在于记录了容器配置细节,而不是把容器启动配置写在随风飘散的命令行里。

    另外 compose 相对 cli 在概念上可以将多个容器组合成一套服务,同一个配置文件中管理,相对零散的命令行更加有条理。

    至于你从 cli 里看到底层加了什么东西,我只能说,眼不见为净,不直接接触就行了。如果真的介意,compose 配置里也可以改变此表现。
    miaotaizi
        6
    miaotaizi  
       354 天前
    年纪大了, 我选 compose
    Honkaiteio
        7
    Honkaiteio  
       354 天前
    compose 方便以后重新部署
    Hopetree
        8
    Hopetree  
       354 天前
    我无脑使用 docker-compose ,即使是一个无配置的 docker 我也会用 docker-compose 启动,因为这可以清晰的知道这个容器启动的参数
    mohumohu
        9
    mohumohu  
       354 天前
    compose up/down 写好了配置一劳永逸,出问题了也方便定位
    zhlxsh
        10
    zhlxsh  
       354 天前 via iPhone
    @liangdi 咨询一下,是在非 root 模式下吗
    duzhuo
        11
    duzhuo  
       354 天前 via Android
    docker-compose 搞不明白就问 gpt 呗
    wdoc
        12
    wdoc  
       354 天前
    临时使用 cli ,长期使用 compose
    julyclyde
        13
    julyclyde  
       354 天前
    如果能简单 docker run 就 run
    如果需要加各种参数……
    julyclyde
        14
    julyclyde  
       354 天前
    @DKingAlpha 但其实“对随风飘散的命令行的需求”是容器技术目前各种产品的缺陷
    也就是,容器并没有包含“all things you need“,还散落了一部分在外面
    liangdi
        15
    liangdi  
       354 天前
    @zhlxsh 是的
    hefish
        16
    hefish  
       354 天前
    op 应该是不能忍受那个 xxx_default , 指定一下 network_mode 应该就行了。
    wxm1997
        17
    wxm1997  
       354 天前
    我选择全都要,docker cli 现在已经集成了 compose 命令
    ck65
        18
    ck65  
       354 天前
    compose 的好处就是可以用 git 管理配置,除此之外简单场景似乎和 cli 没啥区别
    eraserrain
        19
    eraserrain  
       354 天前
    声明式和命令式的区别,大部分情况都可以选择声明式
    vivisidea
        20
    vivisidea  
       354 天前
    选择 docker-compose

    我碰到过一个情况,之前有个 docker 是用命令行起的,而且参数比较复杂,各种环境变量,run 起来之后没有存下来。。后来就不记得怎么启动的了,用 compose 就不会有这个问题,都在 compose 文件里
    fox0001
        21
    fox0001  
       354 天前 via Android
    使用过 docker-compose ,就回不去了
    DKingAlpha
        22
    DKingAlpha  
       354 天前 via Android
    @julyclyde 如果没有可配置项,是希望镜像作者/容器自启时猜你想如何特化容器吗?
    julyclyde
        23
    julyclyde  
       354 天前
    @DKingAlpha 对于有特化需求却没有合适的手段的情况,我觉得就不该用容器技术了
    因为这样很难达到容器技术鼓吹的“easy”
    DKingAlpha
        24
    DKingAlpha  
       354 天前 via Android
    @julyclyde 我觉得合适的手段就是在 README 里写清楚用哪几个参数或者哪个目录来配置/交换数据。这样已经将环境复杂性收缩到底了,因为归根结底特化使用者需要用 kv 一类的数据来指定配置内容。

    容器是用来解决环境配置问题的,但不是魔法棒。easy 也需要用户理解。
    julyclyde
        25
    julyclyde  
       354 天前
    @DKingAlpha README 放里面没人看;放外边就和主体分离了
    主要是这技术一直强调的“包裹”反而成了阻碍很多事情的绊脚石

    如果是 rpm/deb/自己编译,正常情况下用户都会去主动找文档;但容器的情况下就会思路较为惰性
    DKingAlpha
        26
    DKingAlpha  
       354 天前 via Android
    @julyclyde 那只能说 RTFM
    512357301
        27
    512357301  
       220 天前 via Android
    @vivisidea hub 里有专门获取容器启动参数的容器,可以输出 docker run 格式的启动命令,不过输出的参数有些冗余,真正用的时候可以删减一下。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   927 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 22:21 · PVG 06:21 · LAX 14:21 · JFK 17:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.