懒猫微服进阶心得(九):商店 App 如何接管 Docker 引擎?
在之前的内容中,我们提到过懒猫微服采用三套独立的 Docker 环境来隔离系统组件、Playground Docker 与商店 App 的 Docker 实例。那么问题来了:如何让商店中上架的 App 操作 Playground 中的 Docker 引擎?
答案是:通过挂载 docker.sock
文件来实现跨容器控制。
所以我们可以在商店的 APP 中操作 playground docker,其实也就是 Docker 面板或者轻量 Docker 面板做的事情。
为什么不操作其他两个 Docker 引擎?
- 系统组件 Docker 无需干预,重启之后可以复原。
- 应用商店有自己的生命周期,也无需干预。
一、在 build.yml
中挂载 Playground 路径
首先,在打包配置 build.yml
中新增 services
字段,用于将宿主机中的 /data/playground
挂载到容器内部:
1 | manifest: ./lzc-manifest.yml |
打包后会生成一个名为 compose.override.yml
的文件。请注意:即使你手动创建了 compose.override.yml
,也可能无法直接生效,必须通过打包流程自动生成。(此结论基于初步测试)
生成后的 compose.override.yml
内容如下:
1 | services: |
二、修改 manifest.yml
实现 docker.sock
映射
为了让上架 App 操作 Docker,需要手动编辑 manifest.yml
文件,添加以下内容:
1 | binds: |
这样,容器内的 Docker CLI 或管理面板就可以通过 DOCKER_HOST
环境变量,控制宿主机的 Docker 引擎。
三、完整的 manifest.yml
示例
以下是完整可运行的 manifest.yml
配置:
1 | lzc-sdk-version: 0.1 |
四、总结
通过挂载 docker.sock
文件和设置 DOCKER_HOST
,我们可以让商店上架的 App 控制懒猫微服的 Playground Docker 实例。我用这个功能上架了自己写的 Docker 面板,一起来玩一玩嘛?
懒猫微服进阶心得(九):商店 App 如何接管 Docker 引擎?
https://xu-hardy.github.io/懒猫微服进阶心得(九):商店-app-如何接管-docker-引擎?/