AI创想
标题:
在Windows docker desktop中编译、运行OpenClaw(上篇)
[打印本页]
作者:
AI小编
时间:
昨天 23:05
标题:
在Windows docker desktop中编译、运行OpenClaw(上篇)
作者:爱知菜
安装Windows docker desktop
首先请安装Windows docker desktop,遇到报错可以参考这篇文章:https://blog.csdn.net/rav009/article/details/147161061
准备OpenClaw Image build环境
装好后,我们要先准备一个镜像,来作为我们构筑Openclaw Image的环境。这里推荐
docker:dind
dind 是指在 Docker 容器内部运行另一个 Docker 守护进程的技术(Docker in docker)。简单来说:在 Docker 里再跑 Docker。
典型使用场景
1. CI/CD 流水线:在 Jenkins、GitLab CI、GitHub Actions 等工具中构建 Docker 镜像
2. Kubernetes 中构建镜像:在 Pod 内执行 docker build
3. 隔离的 Docker 环境:测试 Docker 功能而不影响宿主机
4. Docker 开发测试:测试 Docker 本身的新特性
核心原理
dind 需要 特权模式(privileged mode) 运行,因为它需要访问宿主机的内核功能来创建和管理容器。
docker pull docker:dind
docker run -it --privileged --name docker-builder -v "D:\ProgramData\Docker-Volume\dind:/workspace" docker:dind
复制代码
这里的“D:\ProgramData\Docker-Volume\dind” 替换成你windows的实际目录,之后Openclaw的image文件会生成在这里。
在Docker Desktop里,用Exec进入dind的容器的命令行,运行如下命令:
cd /workspace
# 在dind里获取openclaw源码,也可以从windows里把源码下载好,放进映射的目录里。
git clone https://github.com/OpenClaw/OpenClaw.git
# 安装openclaw image build的依赖
apk update && apk add --no-cache \
bash \
build-base \
python3 \
nodejs \
npm \
openssl
# 补全 docker compose 软链接(避免命令找不到)
ln -s /usr/libexec/docker/cli-plugins/docker-compose /usr/bin/docker-compose
复制代码
参考图:
(, 下载次数: 0)
上传
点击文件名下载附件
注意:apline的源有可能报TLS错误,是国内网络造成的,可以换ali的源
# 1. 备份原源文件(容器内执行)
mv /etc/apk/repositories /etc/apk/repositories.bak
# 2. 写入阿里云国内源(适配 Alpine v3.23)
echo "https://mirrors.aliyun.com/alpine/v3.23/main/" > /etc/apk/repositories
echo "https://mirrors.aliyun.com/alpine/v3.23/community/" >> /etc/apk/repositories
复制代码
进行build:
# 1. 定义镜像名称(自定义,方便识别)
export OPENCLAW_IMAGE=openclaw:local
# 2. 定义 apt 包(Alpine 系统用不到,留空即可)
export OPENCLAW_DOCKER_APT_PACKAGES=""
docker build \
--build-arg "OPENCLAW_DOCKER_APT_PACKAGES=${OPENCLAW_DOCKER_APT_PACKAGES}" \
-t "${OPENCLAW_IMAGE}" \
-f /workspace/openclaw/Dockerfile \
/workspace/openclaw
复制代码
注意这里又会有个错误,是关于npm link的,如下图:
(, 下载次数: 0)
上传
点击文件名下载附件
这里需要做两件事:
1. 在dind容器里主动创建相关目录:
mkdir /usr/local/lib/node_modules
复制代码
2. 修改Openclaw的Dockerfile,在“RUN npm link”前,加入USER root。使用root身份执行“RUN npm link”,执行后再切回node用户。
USER root
RUN npm link
USER node
复制代码
解决上述问题后就可以导出image的tar文件了。
导出tar
docker images
docker save -o /workspace/openclaw-local.tar openclaw:local
复制代码
如果你的/workspace和windows的对应目录(我映射的是“D:\ProgramData\Docker-Volume\dind”)映射正确的话,就可以去windows的对应目录下找到openclaw-local.tar文件了。
(, 下载次数: 0)
上传
点击文件名下载附件
原文地址:https://blog.csdn.net/rav009/article/details/158464797
欢迎光临 AI创想 (https://llms-ai.com/)
Powered by Discuz! X3.4