CentOS 7通过Docker安装CodeBuddy CLI完整流程与踩坑经验
环境说明
- 宿主机:CentOS 7
- 用户路径: /home/lcr/,自行替换
- 目标:在 Docker 容器中运行 CodeBuddy CLI,并支持宿主机浏览器访问
0. 为什么要用 Docker?
试错过程
在 CentOS 7 上尝试直接安装 CodeBuddy CLI 时,先后遇到了以下问题:
1. Node.js 18.x / 20.x 无法安装(glibc 版本过低)
CentOS 7 自带的 glibc 版本为 2.17,而 Node.js 18.x 及以上要求 glibc ≥ 2.28。使用 NodeSource 官方源安装时直接报依赖错误:
错误:软件包:nodejs 需要:glibc >= 2.28
已安装: glibc-2.17-326.el7_9.3.x86_64
Node.js 16.x 虽然兼容 glibc 2.17,但 NodeSource 已停止为 CentOS 7 提供 16.x 的 RPM 包,实际拉到的仍是 18.x。
2. 原生二进制安装也失败(Bun 运行时依赖 glibc 2.18)
CodeBuddy CLI 的原生二进制版本使用 Bun 打包,而 Bun 运行时要求 glibc ≥ 2.18,同样比 CentOS 7 的 2.17 高:
error: /lib64/libc.so.6: version `GLIBC_2.18' not found
3. 升级 glibc 风险极高
glibc 是 Linux 系统最底层的 C 运行时库,几乎系统中所有程序都依赖它。在 CentOS 7 上强制升级 glibc 极大概率导致系统崩溃,不具备可行性。
结论:Docker 是最优解
Docker 容器自带独立的文件系统和运行环境,可以在 CentOS 7 宿主机上运行 Ubuntu 22.04 容器(glibc 2.35),彻底绕过 glibc 版本限制。同时:
- 容器内的环境与宿主机完全隔离,互不影响
- 项目文件通过目录挂载共享,在容器内修改代码,宿主机直接可见
- 不需要时删除容器即可,零残留
1. 安装 Docker
# 安装依赖
yum install -y yum-utils
# 添加 Docker 源(使用阿里云镜像,国内网络更稳定)
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装 Docker
yum install -y docker-ce docker-ce-cli containerd.io
# 启动 Docker 服务
systemctl start docker
systemctl enable docker
# 验证安装
docker --version
配置 Docker 镜像加速(国内环境)
cat > /etc/docker/daemon.json << 'EOF'
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.xuanyuan.me"
]
}
EOF
systemctl daemon-reload
systemctl restart docker
2. 添加用户到 docker 组
避免每次使用 docker 命令都需要 sudo:
usermod -aG docker lcr
# 重新登录或执行以下命令使生效
newgrp docker
3. 创建 Dockerfile
在用户目录下创建 /home/lcr/Dockerfile:
FROM node:20-slim
# 安装基础工具
RUN apt-get update && apt-get install -y --no-install-recommends \
git curl vim \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# 配置 npm 国内镜像源
RUN npm config set registry https://registry.npmmirror.com
WORKDIR /workspace
CMD ["/bin/bash"]
为什么不在 Dockerfile 中安装 CodeBuddy CLI?
CodeBuddy CLI 更新频繁,如果把安装命令写死在 Dockerfile 中(
RUN npm install -g @tencent-ai/codebuddy-code),会导致两个问题:
- 每次更新都要重新构建镜像 — CLI 发新版本时,必须修改 Dockerfile 或带
--no-cache重新docker build,构建过程中还要重新拉取基础镜像和所有依赖,耗时较长。- 构建时网络不稳定容易失败 —
npm install在docker build阶段如果遇到网络波动或超时,整个构建就会中断,排查和重试成本高。因此本方案将 CLI 安装放到第 4 步,首次手动安装后通过
docker commit固化,后续升级只需进入容器执行npm update -g @tencent-ai/codebuddy-code再docker commit即可,灵活且高效。
4. 构建基础镜像并安装 CLI
4.1 构建基础镜像
cd /home/lcr
docker build -t codebuddy-base .
4.2 启动容器并手动安装 CLI
# 启动基础容器
docker run -it --name temp-codebuddy codebuddy-base bash
# 在容器内执行
npm install -g @tencent-ai/codebuddy-code
# 退出容器(Ctrl+D),然后保存为镜像
exit
docker commit temp-codebuddy codebuddy-cli
docker rm temp-codebuddy
5. 创建持久化目录
mkdir -p /home/lcr/.codebuddy-docker
6. 创建启动脚本
创建 /home/lcr/start-codebuddy.sh:
#!/bin/bash
docker run -it --rm \
-p 39162:39162 \
-v $(pwd):/workspace \
-v /home/lcr/.codebuddy-docker:/root/.codebuddy \
-e CODEBUDDY_API_KEY="此处粘贴你的API_KEY" \
-e CODEBUDDY_INTERNET_ENVIRONMENT=internal \
codebuddy-cli
赋予执行权限:
chmod +x /home/lcr/start-codebuddy.sh
7. 启动容器并运行 CodeBuddy
# 在项目目录下执行
cd /path/to/your/project
/home/lcr/start-codebuddy.sh
# 进入容器后,启动 CodeBuddy 服务
codebuddy --serve --host 0.0.0.0 --port 39162
8. 访问 CodeBuddy Web UI
在宿主机浏览器打开:
http://192.168.0.165:39162
说明:由于 CodeBuddy 的安全策略限制,从局域网其他机器(如 Windows)直接访问会返回 403。目前仅支持宿主机本机浏览器访问。
9. 常用命令速查
| 操作 | 命令 |
|---|---|
| 查看运行中的容器 | docker ps |
| 查看所有容器 | docker ps -a |
| 停止容器 | docker stop <容器名> |
| 进入运行中的容器 | docker exec -it <容器名> bash |
| 查看镜像 | docker images |
| 删除容器 | docker rm <容器名> |
| 删除镜像 | docker rmi <镜像名> |
| 查看容器日志 | docker logs <容器名> |
| 查看容器 IP | docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <容器名> |
10. 文件结构总结
/home/lcr/
├── Dockerfile # Docker 镜像构建文件
├── start-codebuddy.sh # 容器启动脚本
└── .codebuddy-docker/ # CodeBuddy 配置持久化目录
└── ... # API Key、会话记录等
11. 注意事项
- 每次更新 CodeBuddy CLI 版本需要重新构建镜像
- CentOS 7 不支持直接安装 CodeBuddy CLI,Docker 是目前最可靠的方案
更多推荐


所有评论(0)