懒猫微服进阶心得(二):一台机器跑三套 Docker?深入解析懒猫容器的共存机制(上)

本文仅代表个人视角对懒猫 Docker 的拆解分析,内容为基于现象的倒推推测,不代表懒猫官方实现方式。

拿到任何 NAS 的第一件事是开启 SSH 功能,第二步就是用 Docker 启动容器。

懒猫微服这个 docker 还不太一样,一个有三个 Docker:

docker : 运行系统组件

pg-docker: 普通的 docker,让我们拿来玩

lzc-docker:运行懒猫商店的 docker

三套 Docker 引擎初探

我们先来看看这三套 docker 引擎跑了些什么,从 ps 看起:

阅读更多

懒猫微服进阶心得(三):一台机器跑三套 Docker?深入解析懒猫容器的共存机制(下)

在上一期里,我们剖析了懒猫微服原生的三套 Docker 共存方案,这次我们来看看怎么在懒猫微服上启动新的 dev-docker 引擎,既能拓展使用,但又不与现有环境相互污染。

核心思路

  1. 独立 daemon.json 指定专属数据目录 / Socket
  2. 一个包装脚本 dev-docker 让你照常敲 docker 命令
  3. 需要时随时启用,不用时一条命令即卸载

目录规划

我目前是在 root 目录下新建了一个 dev 目录,新的容器所有数据都在这个目录下。

1
2
3
4
5
6
.
├── dev/
│ ├── data/ # 镜像层、容器元数据
│ ├── exec/ # 运行时文件
│ └── daemon.json
└── dev-docker # 包装脚本,照样敲 `docker`
阅读更多

懒猫微服进阶心得(四):每次重启都丢配置?用 systemctl --user 自动装回环境!

在懒猫微服中,为了防止用户误操作破坏系统,默认启用了“重启还原机制”——每次重启都会还原大部分系统改动。不过,用户主目录的数据是保留的(例如 /root/),这就给我们留下了一条生路。

以往每次重启后,我都要手动重新安装 htopsudohttpie 等工具,重复操作实在麻烦。之前在 VIP 群里沟通过能否允许使用 systemctl 自启脚本,现在终于支持了 systemctl --user 的开机启动功能,第一时间来体验一下!


💻 安装脚本 init.sh

我们把需要安装的软件统一写进一个脚本,只安装未安装的部分,避免重复浪费时间。同时也支持远程安装一些工具,例如 superfile

阅读更多

懒猫微服进阶心得(五):使用懒猫微服做Ventoy启动盘

由于经常给别人装系统,所以经常做了一个多合一的系统盘。这今年基本都没用过 windows 了,都是 MacOS + Linux 的组合。但是 Ventoy 本身不支持 MacOS,以前是用 Windows 虚拟机来做这个事情,把 USB 直通进去再烧录。但是最近实在不想碰 Windows,所以想着是不是能在懒猫微服上做这个操作。

image-20250531145017064

下载并解压 Ventoy

1
2
3
4
wget https://github.com/ventoy/Ventoy/releases/download/v1.1.05/ventoy-1.1.05-linux.tar.gz
tar zxvf ventoy-1.1.05-linux.tar.gz
cd ventoy-1.1.05/
./VentoyWeb.sh
阅读更多

懒猫微服进阶心得(六):以纸砚双拼为例,快速移植纯前端项目到懒猫微服

之前移植了一款颜值极高的纸砚双拼,想着纯前端类的软件应该都是一样的操作,所以把操作记录下来,方便以后复习查看,也相当于一个教程吧。

image-20250531195827292

对于这种场景来说,前端项目开发完成后,我们将构建好的静态页面部署到服务器上。借助 Docker 和 Nginx,可以实现一套轻量、快速、可移植的部署方式,特别适合懒猫微服这种容器化的环境,也很适合日常调试测试使用。

下面将手把手教你如何打包一个 Vue 或 React 项目,并通过 Docker + Nginx 构建一个可复用的前端部署容器镜像,然后就可以把这个部署到懒猫微服删,当然也适用于各种 Linux + Docker 环境。


1 · 准备目录结构

纸砚双拼是 Vue 的项目,所以直接执行这个命令打包

1
2
npm i
npm run build

打包完成后,项目根目录下会生成一个 dist/ 文件夹,里面包含:

  • index.html
  • 静态 JS、CSS 资源
  • 图片等其他引用资源

基本所有前端工程化的流程都是部署这个 dist/静态目录。

阅读更多

懒猫的镜像仓库

这几年国内访问 Dockerhub 总有类似的问题,所以很多情况都建议自建 docker 仓库,比如 Habor,Nexus 或者。毕竟 GFW 的花样我们想不到。

云厂商的 ECR。但是对于个人玩家或者爱好者来说这一套实在是太重太难以维护了,可能也就是这个原因,懒猫微服也提供了镜像仓库的和本地仓库的功能。

先说镜像仓库,就是从懒猫微服的服务器上先拉 Docker image,然后再推到自己的 registry。这一步骤通常由出海链路比较好的机器来完成。

懒猫镜像同步功能

懒猫提供了便捷的镜像同步命令:

1
lzc-cli appstore copy-image cloudsmithy/lazycat-nav

执行之后就可以看到镜像仓库,registry.lazycat.cloud 这个地址。

阅读更多

懒猫微服进阶心得(九):商店 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 挂载到容器内部:

阅读更多

Easysearch 中 PUT 和 POST 更新索引的区别及常见错误解析

Easysearch 中,PUTPOST 都用于创建或更新文档,但它们的使用方式和行为有所不同。理解这些区别并正确使用,可以避免常见的错误,并确保数据操作符合预期。


1. PUT 用于创建或完全替换文档

PUT 方法要求必须提供文档 ID,用于创建或完全替换已有文档。如果指定的文档 ID 不存在,则 PUT 会创建一个新文档;如果该 ID 已存在,则会完全覆盖原有数据,不会保留任何旧字段。

示例

1
2
3
4
PUT my_index/_doc/1
{
"myindex": 123
}

执行效果

  • 如果 ID 1 存在,原有文档会被完全覆盖,只保留 myindex 字段。
  • 如果 ID 1 不存在,则创建一个新文档。

常见错误

1
PUT my_index/_doc
阅读更多

Easysearch 使用 AWS S3 进行快照备份与还原:完整指南及常见错误排查

Easysearch 可以使用 AWS S3 作为远程存储库,进行索引的快照(Snapshot)备份和恢复。同时,Easysearch 内置了 S3 插件,无需额外安装。以下是完整的配置和操作步骤。


1. 在 AWS S3 上创建存储桶

  1. 登录 AWS 控制台,进入 S3 服务。
  2. 创建一个新存储桶(例如 easysearch-backups)。
  3. 启用版本控制(可选,但推荐)。
  4. 权限配置:确保 IAM 角色具有访问 S3 的权限。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"Version": "2012-10-17",
"Statement": [
{
"Action": ["s3:ListBucket"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::s3-bucket-name"]
},
{
"Action": ["s3:GetObject", "s3:PutObject", "s3:DeleteObject"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::s3-bucket-name/*"]
}
]
}

2. 在 Console 上注册 S3 作为快照存储库

阅读更多

Docker-Compose部署 EasySearch 异常问题排查

近期将原本运行在 macOS 上的 EasySearch、Console 和 Coco-server 等服务迁移至群晖 NAS 平台。在迁移过程中遇到了 EasySearch 容器无法正常启动或运行中意外终止的问题。本文记录了这些问题的具体表现及解决方案,旨在为后续类似部署提供参考。

基础部署配置

以下是官方推荐的 docker-compose 配置文件:
地址如下:

阅读更多