Docker 启动命令太长了,有没有约定好配置的封装工具?

2022-08-27 15:38:05 +08:00
 songhuangcn

Docker 有很多优点:

  1. 不依赖操作系统,怎么升级系统都不怕
  2. 由于第 1 点,方便运行一些操作系统已经不支持的软件版本
  3. 因为隔离性,很方便同时运行一个软件的不同版本(开发不同项目时经常需要)

但是 Docker 也有一些缺点:

  1. 配置太繁琐,新人需要了解一堆新概念:volume, publish, export

不知道有没有用户有跟我一样的需求:就是想在电脑上用 Docker 跑起来一个服务比如 MySQL ,但不需要处理太多容器的细节和配置,你跑的跟原生 MySQL 一样就行了,跑完就能用 3306 端口,日志和数据在固定的路径能找到。

总结来说这个工具用户接口很像包管理工具,比如 Homebrew:

brew services start mysql

但是底层用的是 Docker ,并帮忙我们配置好了启动命令。

我自己没找到这类工具,就搞了一个原型版本: https://github.com/songhuangcn/dpm

大家有这类工具推荐吗?

2751 次点击
所在节点    开源软件
27 条回复
vinsony
2022-08-27 15:40:43 +08:00
docker-compose
xaplux
2022-08-27 15:43:16 +08:00
这不就是 Docker Compose 么。。。
songhuangcn
2022-08-27 15:47:56 +08:00
docker-compose 还是要用户来写配置,只是从写 docker 的配置换成写 docker-compose 的配置吧

那我改个问发,有没有配置好 docker-compose 封装项目,让我跑起一个软件不需要写 docker-compose.yml ?
sky96111
2022-08-27 15:58:32 +08:00
@songhuangcn 最合理的应该是开发者自己维护一个 compose.yaml
nutting
2022-08-27 16:00:34 +08:00
估计么有,所以现在都在搞 web 界面的 CI/CD 系统,底层就是通过各种参数实现
cxtrinityy
2022-08-27 16:08:52 +08:00
用户不维护那至少开发者也要提供一个默认的带参命令或者 compose 文件, 不管哪个, 总有人要去维护, 维护好了用 alias 不就可以不用敲那么长的命令了么, 或者像 zsh 这种自带历史命令提示补全的, 打个 docker 就可以在所有 docker 历史命令里快速选择
songhuangcn
2022-08-27 16:11:00 +08:00
@sky96111 docker-compose.yml 我理解更贴近项目的玩法,同一个 docker-compose.yml 的服务网络共享。

我现在的需求更像是要装一个原生软件,装好后开发机里所有项目共享这种。
songhuangcn
2022-08-27 16:14:59 +08:00
@cxtrinityy 嗯嗯,你说的对,大家还是会有维护需求。所以这个工具应该提供的是默认配置,但支持覆盖他的配置。

我理解这类工具的作用除了搞定默认配置,还可以约定好一种 docker 配置组织方式吧,不会有些人用 bash function ,有些人用 bash alias
cxtrinityy
2022-08-27 16:23:02 +08:00
@songhuangcn 那你这个需求我没理解错的话应该是收集通用服务的默认 docker 配置, 然后普通用户一键点击下载镜像启动容器一条龙, 同时提供 GUI 修改默认配置吧
如果没理解错的话, 感觉应该挺少见的但的确适合小白用户的最后一米, 大部分 docker 在 hub 上其实已经提供了默认启动配置, 可以爬一下快速丰富下你的 repo
oott123
2022-08-27 16:23:43 +08:00
看看 nix
songhuangcn
2022-08-27 16:32:21 +08:00
@cxtrinityy 对,你理解完全正确。爬 docker hub 是一个好建议,非常感谢
anubu
2022-08-27 16:45:30 +08:00
似乎主要用于仅仅是快速启动,跑一跑验证的场景,类似宝塔面板一类的工具。
docker 和 docker-compose 常用的命令和字段非常有限,很低的学习投入就能覆盖大部分场景,遇到特别的需求再翻文档也够用。
songhuangcn
2022-08-27 17:12:21 +08:00
@anubu 不是快速启动,你要跳出 docker 范围来看。你用包管理工具安装并运行 mysql ,你会做什么配置吗?这些配置在跑起来后在做也来得及不是吗。
anubu
2022-08-27 17:46:18 +08:00
@songhuangcn 我说的“快速启动”可能表达有误,本意是说“快速安装,几乎零配置启动”,就是在说包管理器类似工作。
我想说的是,在类似包管理器场景下,如果不调整默认配置,那么就可以“快速启动”,如果要调整默认配置,很多时候还是要了解包分发运行的基本逻辑。
比如使用包管理器 apt 安全 docker ,想要调整 docker 的 remote api ,很多时候还是要看官方文档,了解以 apt 分发时的配置逻辑是什么样的,进而可能需要了解 systemd 的基本配置逻辑等等。
dpm 作为包管理器应该有类似的问题,即如果要调整默认配置,那么需要了解学习这种包管理的分发运行逻辑。虽然理解配置逻辑并不麻烦,但考虑到通用性,似乎直接学习通用性更高的 docker 、docker-compose 更“划算“,毕竟 docker 的入门成本真的很低,收益却特别高。
songhuangcn
2022-08-27 18:46:17 +08:00
@anubu 封装工具都有这个问题吧,一般也不会走到这一步(如果 docker 本身是约定大于配置的话)。但是现在实在是满足不了,我想解决的是 brew 这些包用户从迁移到 docker 服务最后一公里的事。

现在基本自己和周边朋友先用着了,要解决封装后多余的学习成本问题,那就只能靠后期良好的文档啥的了,不过好在这个工具功能成本不大,大部分时间应该就是花在整理通用的包配置和文档上。

感谢你的回复。
wunonglin
2022-08-27 19:02:11 +08:00
那不就是 helm 么
avenger
2022-08-27 20:29:45 +08:00
`laravel/sail` 可以看看
zhouwb
2022-08-27 22:06:46 +08:00
其实对于小白和技术爱好者来说,还真需要这么个东西,他们不是搞技术的,但是偶尔需要弄个 docker 服务,比如自家安个 homebridge 、aliyunwebdav 等等,他们不需要高需求,只要能运行就 ok ,因为服务基本上只有自己用,所以我精神上支持楼主
songhuangcn
2022-08-27 23:47:45 +08:00
@zhouwb 感谢支持,看了大家的回复,应该真是没有这类工具了。这个个人维护只能做成小众工具了,能找到个开源社区来做就好了
baobao1270
2022-08-28 09:44:43 +08:00
vagrant ?比 docker 重,但是似乎更符合你的需求

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/875814

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX