有没有能把 docker 整个镜像打包成二进制的工具 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
IdJoel
V2EX    问与答

有没有能把 docker 整个镜像打包成二进制的工具

  •  
  •   IdJoel 2024-03-17 10:37:08 +08:00 6691 次点击
    这是一个创建于 624 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有时候有些简单的应用,需要依赖很多服务,比如 Mysql redis 之类的 但是这些服务新手安装又有些难度,写 shell 脚本去安装又要考虑很多 Linux 发行版。

    有没有一个简单的办法,把 docker 和 docker image 直接打包成一个 zip 或者 二进制文件,用户一运行,什么都有了,最好还能做些简单的管理。

    第 1 条附言    2024-03-17 23:16:05 +08:00
    好像我表达的有点问题


    举个例子把: 比如我有个幻兽帕鲁的服务端,里面依赖了很多服务,例如 MySQL Redis 之类的服务,使用这套服务的小白可能根本不知道什么是 docker ,什么是 MySQL ,如何能让他们最快速的运行这套程序呢?

    现在相对来说比较方便的就是安装一个 docker ,然后 docker compose up -d ,但是其实也并不是很方便,例如我的 image 不太想放到任何网络上,然后用户又得学习去装 docker 之类的东西。


    有没有简单的方法,能把镜像 和 docker 打在一起,用户直接运行就可以,就像运行一个 Golang 编写的程序一样方便。

    https://github.com/NilsIrl/dockerc 这个程序算是比较符合我的需求,但是他是针对单个镜像的,我其实更希望是 docker compose 这种,可以针对多个服务。

    如果真的没有的话,我就准备自己动手写一套了,这东西针对很多小白来说真的太方便了。
    36 条回复    2024-03-20 12:28:51 +08:00
    lonelykid
        1
    lonelykid  
       2024-03-17 10:40:59 +08:00
    二进制包不是也得考虑不同发行版吗?不用 Shell 可以用 Python ,现在很多 Linux 都默认自带 Python 环境。
    momocraft
        2
    momocraft  
       2024-03-17 10:46:01 +08:00
    有 虚拟机镜像
    tairan2006
        3
    tairan2006  
       2024-03-17 10:46:26 +08:00
    shell 脚本为啥要考虑发行版?你用了 docker 就不需要考虑发行版了啊
    Muniesa
        4
    Muniesa  
       2024-03-17 10:49:12 +08:00 via Android
    用户一运行,什么都有了:把你要用的服务打包成镜像,写个脚本安装 docker 然后运行容器,不就可以了吗
    mogita
        5
    mogita  
       2024-03-17 10:50:27 +08:00
    你是不是在找 Docker Compose...
    billzhuang
        6
    billzhuang  
       2024-03-17 10:53:43 +08:00 via iPhone   1
    @ck65 hahahaha
    billzhuang
        7
    billzhuang  
       2024-03-17 10:54:17 +08:00 via iPhone
    你把 image 暴露给用户?
    IdJoel
        8
    IdJoel  
    OP
       2024-03-17 11:04:10 +08:00   1
    @lonelykid python 写脚本 安装 MySQL 和 redis 不一样又发行版不同需要做兼容的问题吗
    IdJoel
        9
    IdJoel  
    OP
       2024-03-17 11:04:36 +08:00
    @momocraft 不太想用虚拟机,性能损耗有点大,现在的 vps 基本都是虚拟化出来的,再套一层应该性能更差
    IdJoel
        10
    IdJoel  
    OP
       2024-03-17 11:05:09 +08:00
    @tairan2006 安装 mysql redis nsq 啥的需要考虑发行版啊
    IdJoel
        11
    IdJoel  
    OP
       2024-03-17 11:05:33 +08:00
    @billzhuang 开源的程序啊,就是暴漏给用户的
    IdJoel
        12
    IdJoel  
    OP
       2024-03-17 11:06:16 +08:00
    @ck65 我当然知道 docker compose 啊,但是这不得写脚本先给用户安装个 docker 然后运行吗?
    phrack
        13
    phrack  
       2024-03-17 11:18:46 +08:00 via iPhone
    fregie
        14
    fregie  
       2024-03-17 11:21:59 +08:00   2
    友情提示:op 说的 docker 镜像并非大家理解的 docker 镜像,而是 docker 程序本身的镜像
    就是说他想要一个能在所有发行版上运行 docker 服务的方法
    tairan2006
        15
    tairan2006  
       2024-03-17 11:24:40 +08:00
    @IdJoel 你真的会用 docker 么,docker 本来就是跨发行版的……

    至于安装 docker 的脚本,官方就有: https://get.docker.com/
    lonelykid
        16
    lonelykid  
       2024-03-17 11:25:02 +08:00
    @IdJoel #8 MySQL 和 Redis 打包成 Docker 镜像,用 Python 安装配置 Docker 下载并运行相应镜像。镜像里的不用考虑发行版,Docker 网上都有相应脚本直接一键安装。Python 和 Shell 的作用其实都是一样的,都只是启动脚本而已,只是相比 Shell 脚本更易读,修改配置文件什么的更容易。
    ETiV
        17
    ETiV  
       2024-03-17 11:27:24 +08:00 via iPhone   1
    https://github.com/NilsIrl/dockerc

    dockerc - compile docker images to standalone portable binaries

    没用过,你自己尝试下
    clemente
        18
    clemente  
       2024-03-17 11:42:07 +08:00
    docker save <image_name> > <二进制包.tar>
    0o0O0o0O0o
        19
    0o0O0o0O0o  
       2024-03-17 11:43:21 +08:00 via iPhone   1
    前几天看到的,就是楼上提到的 dockerc
    billzhuang
        20
    billzhuang  
       2024-03-17 12:01:10 +08:00 via iPhone
    但你如果是个开源的服务,需要依赖 redis 、mysql 的话 ,但如果目标用户如果连 docker 安装都不会,他们怎么解决你系统的问题呢。
    IdJoel
        21
    IdJoel  
    OP
       2024-03-17 12:29:26 +08:00
    @billzhuang 很多东西。例如游戏服务器 他们单纯就是想自己搭一分。根本不关心什么代码啊
    0o0O0o0O0o
        22
    0o0O0o0O0o  
       2024-03-17 12:45:31 +08:00
    如果只是怕写 shell 脚本麻烦,其实 docker 提供了
    https://github.com/docker/docker-install

    其实,如果写 shell 脚本的麻烦都无法接受,你提到的这类操作会带来的麻烦只会更多吧?
    expy
        23
    expy  
       2024-03-17 13:27:12 +08:00
    参考各种 vps 一键 dd 重装系统脚本,做成系统镜像灌进去。
    totoro625
        24
    totoro625  
       2024-03-17 13:30:23 +08:00
    写 shell 脚本自动安装 docker 并运行 Mysql redis 容器
    用户只需要交互 shell 脚本就能控制容器
    momocraft
        25
    momocraft  
       2024-03-17 15:12:48 +08:00
    或者学写 cloud-init yaml
    很多云镜像都支持
    用户创建虚拟机时指定你创建的 cloud-init yaml ,VM 创建好后自动运行,安装好所有东西
    ytlm
        26
    ytlm  
       2024-03-17 21:16:25 +08:00
    docker export 和 chroot 命令研究一下试试
    1daydayde
        27
    1daydayde  
       2024-03-17 22:59:34 +08:00   1
    Snap 、Appimage 、Flatpak 等是不是你要找的
    IdJoel
        28
    IdJoel  
    OP
       2024-03-17 23:08:21 +08:00
    @0312birdzhang 我研究研究,但是印象中这东西应该是针对一个应用开发的,不是针对应用 + 服务开发的
    IdJoel
        29
    IdJoel  
    OP
       2024-03-17 23:17:47 +08:00
    @momocraft
    @expy 这个方法还是不太行,很多海外的 VPS 并不支持这么复杂的东西
    blankmiss
        30
    blankmiss  
       2024-03-17 23:32:18 +08:00
    @IdJoel ?绝大数的 vps 都支持 很少见不支持的
    lniwn
        31
    lniwn  
       2024-03-18 13:00:13 +08:00 via iPhone
    podman-compose
    IdJoel
        32
    IdJoel  
    OP
       2024-03-18 16:03:51 +08:00
    @blankmiss 哇,基本完美符合我的需求
    IdJoel
        33
    IdJoel  
    OP
       2024-03-18 16:04:28 +08:00
    @lniwn 哇,基本完美符合我的需求,感谢
    IdJoel
        34
    IdJoel  
    OP
       2024-03-18 16:05:55 +08:00
    @blankmiss 各种很便宜海外的服务器基本都不支持把,像 bwg 之类的。aws aliyun 什么的肯定支持
    blankmiss
        35
    blankmiss  
       2024-03-19 23:11:05 +08:00
    只要是 linux 服务 就一定支持 dd 命
    IdJoel
        36
    IdJoel  
    OP
       2024-03-20 12:28:51 +08:00
    @blankmiss 我看错了,我以为你是哪个 cloud init 的,其实就是 dd 也很多不支持的,openvz 虚拟出来的机器就不能
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1091 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 18:00 PVG 02:00 LAX 10:00 JFK 13:00
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86