安装 KICKPI RK3576
安装 KICKPI RK3576
RK3576 docker
https://gitee.com/tanzhtanzh/kickpi-book/tree/master/rk3576/zh 官方文档
https://zhuanlan.zhihu.com/p/24228872523 可以参考网上的解决方法 添加源试试
配件串口连接线:

- 设置时区亚洲/上海
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
KICKPI Ubuntu 安装中文输入法(ibus 版)
1️⃣ 更新软件源
sudo apt update
2️⃣ 安装中文输入法相关软件
sudo apt install -y ibus ibus-pinyin ibus-libpinyin
3️⃣ 配置系统使用 ibus
im-config -n ibus
这个命令会将系统默认输入法框架设置为 ibus。
4️⃣ 重新登录桌面或重启系统
确保配置生效。
5️⃣ 添加中文输入法
- 打开 IBus Preferences(在桌面搜索或终端输入
ibus-setup打开)。 - 进入 Input Method 标签页。
- 点击 Add → Chinese → Pinyin(或其他中文输入法,如双拼、五笔)。
- 应用保存设置。
6️⃣ 切换输入法
- 默认快捷键:
Ctrl + Space - 可在 IBus Preferences 中自定义快捷键。
这样一套流程下来,你就可以在 KICKPI Ubuntu 上直接输入中文了。
可以把你的步骤整理得更规范、结构化,并加上必要的说明和安全提示:
在国内机器使用清华 TUNA 镜像源安装 Docker(Ubuntu/Debian)
1️⃣ 添加 Docker GPG 公钥
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-ce.gpg
用于验证 Docker 软件包的完整性和来源,保证安全。
2️⃣ 添加清华 TUNA 国内镜像源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-ce.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
注意:
-
$(dpkg --print-architecture)自动选择系统架构(amd64 / arm64 等)。-
$(lsb_release -cs)自动获取 Ubuntu 版本代号。
3️⃣ 更新 apt 软件源
sudo apt update
4️⃣ 安装 Docker 组件
sudo apt install -y docker-ce docker-ce-cli containerd.io
安装内容:
-
docker-ce:Docker Engine(核心服务)-
docker-ce-cli:命令行工具-
containerd.io:容器运行时
5️⃣ 启动并设置 Docker 开机自启
sudo systemctl enable docker
sudo systemctl start docker
sudo systemctl status docker
6️⃣ 测试安装是否成功
docker run hello-world
如果输出欢迎信息,则 Docker 安装成功。
加入docker 权限组
这个错误是因为当前用户 没有权限访问 Docker 的 Unix socket (/var/run/docker.sock)。正确做法是把用户加入 docker 用户组。操作步骤如下:
1️⃣ 创建 docker 组(如果没有)
sudo groupadd docker
大多数系统安装 Docker 时已经创建了
docker组,可以忽略这步。
2️⃣ 将当前用户加入 docker 组
sudo usermod -aG docker $USER
-aG表示追加到组,不会删除已有组。
3️⃣ 重新登录或刷新组权限
# 注销并重新登录,或者执行:
newgrp docker
4️⃣ 测试 Docker 权限
docker run hello-world
如果输出欢迎信息,则说明权限问题已解决,可以不再使用 sudo 来运行 Docker。
✅ 小结:
- 创建
docker组(可选) - 用户加入
docker组 - 重新登录或刷新组权限
- 测试运行
我可以帮你写一个 一条命令就让当前用户拥有 Docker 权限的脚本,执行后立即生效,无需手动注销登录。
你希望我写吗?
Docker Compose V2
好的,我帮你整理一个完整流程,保证 Docker Compose V2 在系统上全局可用,并设置环境变量。
1️⃣ 下载官方二进制
# 下载适合当前系统架构的 Docker Compose V2 二进制
sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose
这样就可以在
/usr/local/bin 全局使用docker-compose命令了。
2️⃣ 验证安装
docker-compose version
输出类似:
Docker Compose version v2.24.1
3️⃣ 设置环境变量(可选,确保命令全局生效)
如果系统默认 PATH 没有 /usr/local/bin,可以在用户配置文件中添加:
# 编辑 bash 配置
nano ~/.bashrc
在文件末尾添加:
# Docker Compose
export PATH="/usr/local/bin:$PATH"
保存后使配置生效:
source ~/.bashrc
现在可以在任意目录直接使用:
docker-compose up -d
docker-compose ps
✅ 总结:
- 直接下载官方二进制 → 跨 Python 版本
- 放
/usr/local/bin→ 默认全局可用 - 可通过 PATH 确保环境变量生效
你当前目录下有 docker-compose-linux-aarch64 这个二进制文件,但系统还不能全局识别它。
要让 docker-compose 命令全局可用,需要把它放到 PATH 中的目录,例如 /usr/local/bin:
1️⃣ 移动文件到 /usr/local/bin
sudo mv ~/docker-compose-linux-aarch64 /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
-
mv:移动并重命名为docker-compose -
chmod +x:赋予可执行权限
2️⃣ 验证安装
docker-compose version
输出类似:
Docker Compose version v2.x.x
3️⃣ 可选:设置 PATH(如果 /usr/local/bin 不在 PATH)
echo 'export PATH=/usr/local/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
✅ 现在你就可以在任何目录直接运行:
docker-compose up -d
docker-compose ps
如果需要,我可以帮你写一个 一键脚本,把下载好的 docker-compose 文件移动、赋权、设置 PATH,一条命令就能完成全局安装。
你希望我写吗?
Docker 拉取镜像失败(hello-world)的解决办法
报错示例:
docker run hello-world
Unable to find image 'hello-world:latest' locally
docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": read tcp ...: read: connection reset by peer
说明:Docker 客户端尝试访问 Docker Hub 或其他注册中心时网络连接失败,常见原因包括:
- 网络阻塞或防火墙限制
- Docker Hub 国内访问慢或被墙
- Docker 配置中没有配置国内镜像加速
1️⃣ 检查 Docker 服务状态
systemctl status docker
确保 Docker 正常运行,如果未运行先启动:
sudo systemctl start docker
2️⃣ 配置国内镜像加速
- 创建或编辑 Docker 配置文件:
sudo mkdir -p /etc/docker
sudo nano /etc/docker/daemon.json
- 添加国内镜像加速配置(示例):
{
"data-root": "/userdata/docker",
"registry-mirrors": [
"https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc",
"https://do.nark.eu.org",
"https://dc.j8.work",
"https://dockerproxy.com",
"https://gst6rzl9.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"http://mirrors.ustc.edu.cn/",
"https://mirrors.tuna.tsinghua.edu.cn/",
"http://mirrors.sohu.com/"
],
"insecure-registries": [
"registry.docker-cn.com",
"docker.mirrors.ustc.edu.cn"
],
"debug": true,
"experimental": false
}
⚠️ 注意:
-
"registry-mirrors":配置国内镜像源,提高访问速度-
"insecure-registries":非 HTTPS 或自建注册中心-
"debug": true可帮助排查问题
3️⃣ 重载并重启 Docker 服务
sudo systemctl daemon-reload
sudo systemctl restart docker
4️⃣ 验证配置是否生效
docker info | grep -i mirror
如果能看到你配置的镜像源,则说明配置生效。
5️⃣ 测试拉取镜像
docker run hello-world
输出欢迎信息,则 Docker 镜像拉取成功。
✅ 小结:
- 检查 Docker 服务
- 配置国内镜像加速
- 重载并重启 Docker
- 验证配置
- 拉取镜像测试
更改 Docker 镜像、容器等数据的存放目录
可以通过修改 Docker 的 data-root 配置来更改 Docker 镜像、容器等数据的存放目录。下面给你整理一个完整步骤:
1️⃣ 停止 Docker 服务
sudo systemctl stop docker
2️⃣ 创建新的存放目录
sudo mkdir -p /userdata/docker
sudo chown root:root /userdata/docker
sudo chmod 711 /userdata/docker
确保 Docker 用户(通常是 root)有权限访问该目录。
3️⃣ 修改 Docker 配置文件
编辑 /etc/docker/daemon.json(如果不存在则创建):
sudo nano /etc/docker/daemon.json
添加或修改如下内容:
在原来的基础上增加一个条"data-root": "/userdata/docker",。
{
"data-root": "/userdata/docker",
"registry-mirrors": [
.....
}
⚠️ 如果文件里已有其他配置项,请注意保留 JSON 格式正确(用逗号分隔)。
4️⃣ 如果想迁移已有镜像(可选)
将原来的 /var/lib/docker 迁移到新目录:
sudo rsync -aP /var/lib/docker/ /userdata/docker/
rsync -aP会保留权限、时间戳,并显示进度。
5️⃣ 重载并启动 Docker
sudo systemctl daemon-reload
sudo systemctl start docker
sudo systemctl status docker
6️⃣ 验证是否生效
docker info | grep "Docker Root Dir"
输出应为:
Docker Root Dir: /userdata/docker
这样 Docker 的镜像、容器、卷都会统一存放到 /userdata/docker/,避免占用系统分区空间。
安装 gitea
你提供的是一个 Docker Compose v3 配置文件,我帮你优化和整理一下格式,让它更清晰、可维护:
nano docker-compose.yaml
networks:
gitea:
external: false
services:
server:
image: docker.gitea.com/gitea:1.24.6
container_name: gitea
restart: always
networks:
- gitea
depends_on:
- db
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=postgres
- GITEA__database__HOST=db:5432
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=gitea
volumes:
- ./gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000" # Web UI
- "222:22" # SSH
db:
image: postgres:14
container_name: gitea-db
restart: always
networks:
- gitea
environment:
- POSTGRES_USER=gitea
- POSTGRES_PASSWORD=gitea
- POSTGRES_DB=gitea
volumes:
- ./postgres:/var/lib/postgresql/data
优化点说明
-
统一缩进与顺序
-
networks →environment →volumes →ports - 便于阅读和维护
-
-
添加容器名称
container_name-
db 改为gitea-db,避免网络里命名冲突
-
-
depends_on
- 确保 Gitea 启动时数据库容器已经启动
-
注释端口用途
- Web UI、SSH 分别标注,方便理解
-
数据库连接
- Gitea 环境变量中
GITEA__database__HOST=db:5432 对应服务名db(Compose 内部 DNS)
- Gitea 环境变量中
如果你需要,我可以帮你再加一个 完整的可生产部署配置:
- 带 持久化卷
- 支持 数据库备份
- 支持 可选 HTTPS
这样直接 docker-compose up -d 就可以在 RK 或服务器上跑起来。
你希望我帮你做这个吗?
挂载磁盘
好的,我帮你整理一个完整的 磁盘挂载流程,包括先手动挂载、再自动挂载,并考虑开机无法挂载时的容错处理。
1️⃣ 查看磁盘信息
lsblk -f
示例输出:
nvme0n1
└─nvme0n1p1 ext4 NVMe 1d2bc907-40e7-42b1-b3e8-8ca60cf12571 444.5G 0% /mnt/nvme
-
nvme0n1p1是分区名 -
ext4是文件系统类型 -
UUID用于自动挂载更稳定
2️⃣ 手动挂载
- 创建挂载点:
sudo mkdir -p /mnt/nvme
- 挂载分区:
sudo mount /dev/nvme0n1 /mnt/nvme
- 查看挂载状态:
df -h | grep nvme
3️⃣ 设置自动挂载(开机生效)
编辑 /etc/fstab:
sudo nano /etc/fstab
添加一行(推荐使用 UUID):
UUID=1d2bc907-40e7-42b1-b3e8-8ca60cf12571 /mnt/nvme ext4 defaults,nofail 0 2
说明:
-
UUID:用blkid /dev/nvme0n1p1查看 -
/mnt/nvme:挂载点 -
ext4:文件系统类型 -
defaults:默认挂载参数 -
nofail:开机无法挂载时继续启动,不阻塞系统 -
0 2:备份与 fsck 顺序
4️⃣ 测试自动挂载配置
sudo umount /mnt/nvme
sudo mount -a
- 如果没有报错,说明
/etc/fstab配置正确 - 可以重启验证自动挂载是否生效:
sudo reboot
df -h | grep nvme
5️⃣ 容错注意事项
-
nofail:分区不存在或损坏时不会阻塞启动 -
x-systemd.device-timeout=30s(可选):系统尝试挂载超时 30 秒后继续启动
示例:
UUID=1d2bc907-40e7-42b1-b3e8-8ca60cf12571 /mnt/nvme ext4 defaults,nofail,x-systemd.device-timeout=30s 0 2
这样做可以保证:
- 手动测试挂载正常
- 开机自动挂载
- 开机挂载失败时不影响系统启动
如果你希望,我可以帮你写一个 一键脚本:
- 创建挂载点
- 挂载磁盘
- 自动写入
/etc/fstab并带容错参数 - 测试挂载
jellyfin 安装
好的 ,把你这条 docker run 转换成 docker-compose.yml 配置如下:
services:
jellyfin:
image: jellyfin/jellyfin:latest
container_name: jellyfin
network_mode: host
volumes:
- /srv/jellyfin/config:/config
- /srv/jellyfin/cache:/cache
- /mnt/nvme/media:/media
restart: unless-stopped
说明:
-
network_mode: host 保持和--net=host一致。 -
volumes 保持和你-v参数相同。 -
restart: unless-stopped保证容器异常退出后会自动重启。 -
container_name: jellyfin方便管理。
⚡ 用法:
-
在某个目录下新建
docker-compose.yml文件,内容就是上面的配置。 -
启动:
docker compose up -d -
停止:
docker compose down
要不要我帮你加上 日志路径挂载(比如 /srv/jellyfin/log:/log),方便排错?
明白了,你想用 FileBrowser,它的优点是:
- 有 网页界面,支持直接上传/下载文件;
- 类似轻量 NAS 文件管理器;
- 账号管理方便,支持权限控制。
filebrowser 安装
filebrowser 的默认账号密码
admin
密码需要使用 docker logs -f xxxxxx(容器ID)来查看
权限问题:
你提到:
“kickpi 已经在组里面了,而且可以访问 nvme,也可以在里面创建文件”
这说明 宿主机上权限是没问题的,但容器内仍然报:
open /srv: permission denied
这就指向一个更隐蔽但常见的问题:Docker 挂载目录时,容器内用户虽然 UID 匹配,但可能因挂载上下文或命名空间限制无法继承宿主机的组权限。
根本原因:容器内进程无法继承宿主机的补充组(supplementary groups)
- 虽然
kickpi 在宿主机属于shared组, - 但 Docker 容器默认不会自动将宿主机用户的补充组(如
shared )传递给容器内进程。 - 容器内 UID 1000 的进程只知道自己的 UID/GID(通常是 1000:1000) ,不知道它在宿主机还属于
shared 组。 - 因此,尽管宿主机上
kickpi 能访问/mnt/nvme,容器内 UID 1000 却只能以“其他用户”身份访问,而你的目录权限是drwxrwx---(others 无权限),所以被拒绝。
✅ 这就是为什么宿主机能访问,容器却不能!
✅ 解决方案
✅ 方法一:显式将容器内用户加入 shared 组(通过 GID)
-
先查
shared 组的 GID:getent group shared输出类似:
shared:x:1001:→ 记下 GID,比如是
1001 -
修改
docker-compose.yml ,使用 group_add 添加组:version: "3" services: filebrowser: image: filebrowser/filebrowser:latest container_name: filebrowser restart: unless-stopped ports: - "8089:80" environment: - TZ=Asia/Shanghai volumes: - /mnt/nvme:/srv - ./config:/config - ./db:/database - /etc/localtime:/etc/localtime:ro # 关键:添加宿主机 shared 组的 GID group_add: - 1001 # ← 替换为你的 shared 组实际 GID -
重启服务:
docker-compose down docker-compose up -d
✅
group_add 会让容器内进程额外拥有该 GID 的权限,从而能访问group=rwx的目录。
✅ 方法二:修改 /mnt/nvme 权限,让“其他用户”可读+执行(快速验证)
如果你只是想快速验证是否是组权限问题:
sudo chmod o+rx /mnt/nvme
然后访问 Web 界面。如果可以了,说明确实是组权限问题,建议回退并用方法一(更安全)。
回退命令:
sudo chmod o-rx /mnt/nvme # 恢复原权限
✅ 方法三:以宿主机用户身份运行容器(指定 user)
如果你知道 kickpi 的 UID 和 shared 的 GID(比如 1000:1001),也可以:
user: "1000:1001"
但注意:FileBrowser 镜像内可能没有 GID 1001 的组,不过 Linux 文件权限只看 GID 数字,所以仍然有效。
services:
filebrowser:
# ...
user: "1000:1001" # UID:GID
volumes:
- /mnt/nvme:/srv
# ...
⚠️ 但某些应用对主 GID 敏感,
group_add更安全灵活。
验证容器内权限(调试用)
你可以进入容器检查:
docker exec -it filebrowser sh
然后执行:
id # 查看 UID/GID 和所属组
ls -ld /srv # 看是否能访问
如果没加 group_add,输出可能是:
uid=1000 gid=1000 groups=1000
ls: cannot open directory '/srv': Permission denied
加了之后:
uid=1000 gid=1000 groups=1000,1001
# 此时就能访问了
✅ 总结
| 问题 | 原因 | 解决 |
|---|---|---|
宿主机能访问 /mnt/nvme,容器不能 |
容器内进程不知道宿主机的补充组(如 shared) |
在 docker-compose.yml 中使用 group_add: [GID] |
操作步骤:
-
getent group shared→ 得到 GID(如 1001) -
在
docker-compose.yml 的filebrowser服务下添加:group_add: - 1001 -
docker-compose up -d重启
完成后,FileBrowser 就能正常访问 /mnt/nvme 中的文件了!✅
安装思源笔记
你提供的命令来自思源笔记官方文档,使用了:
- 挂载工作区目录
- 设置
PUID/PGID - 通过命令行参数指定
--workspace 和--accessAuthCode
但要注意:思源笔记 Docker 镜像(b3log/siyuan )并不真正支持 PUID /PGID 环境变量(这是 LinuxServer 镜像的特性),它内部使用固定用户 siyuan(UID 1000),不过它会读取 --workspace 和 --accessAuthCode 参数。
✅ 正确转换为 docker-compose.yml
根据你的 docker run 命令,等效的 docker-compose.yml 如下:
version: "3"
services:
siyuan:
image: b3log/siyuan:latest
container_name: siyuan
restart: unless-stopped
ports:
- "6806:6806"
environment:
- TZ=Asia/Shanghai
# 注意:PUID/PGID 实际无效,但可保留(无害)
- PUID=1001
- PGID=1002
volumes:
# 将宿主机的 workspace_dir_host 挂载到容器内的 workspace_dir_container
# 例如:./workspace:/siyuan/workspace
- ./workspace:/siyuan/workspace
command: >
--workspace=/siyuan/workspace
--accessAuthCode=your_secure_password
# 可选:显式指定用户(推荐,避免权限问题)
# user: "1001:1002"
使用说明
-
替换路径
将./workspace改为你实际的宿主机目录,例如:volumes: - /home/kickpi/siyuan-workspace:/siyuan/workspace -
设置强密码
将your_secure_password替换为你的访问授权码,例如:command: > --workspace=/siyuan/workspace --accessAuthCode=MySiyuan@2025! -
权限建议(重要)
虽然PUID=1001 /PGID=1002 不会被镜像自动应用,但你可以手动指定 user 来确保权限一致:user: "1001:1002"并提前设置宿主机目录权限:
sudo chown -R 1001:1002 /path/to/workspace_dir_host
为什么推荐用 command 而不是环境变量?
- 思源笔记 只接受
--accessAuthCode 命令行参数(或等效的SIYUAN_ACCESS_AUTH_CODE环境变量)。 - 官方同时支持两种方式,但 命令行参数优先级更高。
- 使用
command 更贴近你原始的docker run逻辑。
你也可以改用环境变量方式(更简洁):
environment: - SIYUAN_ACCESS_AUTH_CODE=your_secure_password command: --workspace=/siyuan/workspace
两者等效,任选其一。
✅ 最终推荐配置(带权限控制)
version: "3"
services:
siyuan:
image: b3log/siyuan:latest
container_name: siyuan
restart: unless-stopped
ports:
- "6806:6806"
environment:
- TZ=Asia/Shanghai
- SIYUAN_ACCESS_AUTH_CODE=MySiyuan@2025! # ← 推荐用 env var
volumes:
- ./workspace:/siyuan/workspace
command: --workspace=/siyuan/workspace
user: "1000:1000" # 与宿主机普通用户一致(通常是 kickpi)
然后执行:
mkdir -p ~/siyuan/workspace
sudo chown -R 1000:1000 ~/siyuan/workspace
cd ~/siyuan
docker-compose up -d
✅ 验证
访问 http://IP:6806,输入授权码 MySiyuan@2025!,即可进入初始化界面。
现在你已完全按照官方
docker run示例,在 Compose 中正确部署思源笔记!
安装EMQX
安装互传服务
qBittorrent WebUI 下载服务安装
Navidrome 安装
docker-compose.yml
services:
navidrome:
image: deluan/navidrome:latest
container_name: navidrome
ports:
- "4533:4533"
environment:
ND_SCANSCHEDULE: 1h
ND_LOGLEVEL: info
ND_SESSIONTIMEOUT: 24h
ND_BASEURL: ""
volumes:
- ./navidrome_data:/data
- /mnt/nvme/media/music:/music:ro # 替换为你的音乐目录
user: "1000:1000" # 可选:指定用户ID,避免权限问题
restart: unless-stopped
group_add:
- 1001
解决启动不了的问题:
你遇到的错误:
FATAL: Error creating cache path: mkdir /data/cache: permission denied
说明 Navidrome 没有权限在 /data 目录下创建 cache 文件夹。这通常发生在使用 Docker 部署时,且挂载的卷(volume)权限配置不当。
问题原因
- 你在
docker-compose.yml 或docker run 中将数据目录挂载到了容器内的/data(这是 Navidrome 默认的数据目录)。 - 但宿主机上对应的目录(比如
./navidrome_data)所属用户不是 Navidrome 容器内运行的用户(默认 UID=1000)。 - 容器内的进程尝试在
/data 下创建cache/、db/等子目录时,因权限不足而失败。
✅ 解决方案
✅ 方法一:修改宿主机目录权限(推荐)有效
假设你的 docker-compose.yml 中有:
volumes:
- ./navidrome_/data
- /your/music:/music:ro
那么你需要确保 ./navidrome_data 目录对 UID=1000 可写:
# 创建目录(如果还没创建)
mkdir -p ./navidrome_data
# 设置权限:让 UID 1000(普通用户)拥有写权限
sudo chown -R 1000:1000 ./navidrome_data
大多数 Linux 系统中,第一个普通用户的 UID 是 1000。Navidrome 官方镜像默认以 UID=1000 运行。
验证是否解决
执行:
docker-compose down
docker-compose up -d
查看日志:
docker-compose logs navidrome
应该不再出现 permission denied,而是显示:
INFO Starting Navidrome server...
INFO Scanning music folder...
补充建议
- 不要手动在宿主机上创建
/data/cache,让 Navidrome 自动创建。 - 确保音乐目录(
/music)至少对容器用户 可读(chmod -R a+r /your/music)。 - 如果使用 NAS 或挂载的外部存储,注意文件系统是否支持 Linux 权限(如 NTFS/FAT32 不支持 UID/GID)。
安装 node-red
要使用 Docker 导出 nodered/node-red:latest 镜像,可以使用 docker save 命令将其保存为一个 tar 文件。以下是具体步骤:
1. 确认镜像存在
首先确认本地已有该镜像(根据你提供的信息,镜像 ID 为 bc6a60b67ad4):
docker images | grep nodered
2. 导出镜像
使用 docker save 命令导出镜像:
docker save -o nodered-node-red-latest.tar nodered/node-red:latest
或者使用镜像 ID:
docker save -o nodered-node-red-latest.tar bc6a60b67ad4
✅ 推荐使用镜像名称(
nodered/node-red:latest),因为这样导出的 tar 文件在导入时会保留原始的仓库名和标签。
3. 验证导出文件
导出完成后,你会在当前目录下看到一个名为 nodered-node-red-latest.tar 的文件,大小约为 600MB 左右。
ls -lh nodered-node-red-latest.tar
4. (可选)压缩文件以节省空间
由于 tar 文件较大,你可以用 gzip 压缩它:
gzip nodered-node-red-latest.tar
# 生成 nodered-node-red-latest.tar.gz
5. 如何导入该镜像(供参考)
在其他机器上,可以使用以下命令导入:
docker load -i nodered-node-red-latest.tar
# 或如果压缩了:
gunzip -c nodered-node-red-latest.tar.gz | docker load
✅ 总结命令:
docker save -o nodered-node-red-latest.tar nodered/node-red:latest
这样就成功将镜像导出为一个可移植的 tar 文件了。
浙公网安备 33010602011771号