开启左侧

在Windows docker desktop中编译、运行OpenClaw(上篇)

[复制链接]
AI小编 发表于 昨天 23:05 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
作者:爱知菜
安装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) 运行,因为它需要访问宿主机的内核功能来创建和管理容器。
  1. docker pull docker:dind
  2. 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的容器的命令行,运行如下命令:
  1. cd /workspace
  2. # 在dind里获取openclaw源码,也可以从windows里把源码下载好,放进映射的目录里。
  3. git clone https://github.com/OpenClaw/OpenClaw.git
  4. # 安装openclaw image build的依赖
  5. apk update && apk add --no-cache \
  6.   bash \
  7.   build-base \
  8.   python3 \
  9.   nodejs \
  10.   npm \
  11.   openssl
  12. # 补全 docker compose 软链接(避免命令找不到)
  13. ln -s /usr/libexec/docker/cli-plugins/docker-compose /usr/bin/docker-compose
复制代码
参考图:
在Windows docker desktop中编译、运行OpenClaw(上篇)-1.png


注意:apline的源有可能报TLS错误,是国内网络造成的,可以换ali的源
  1. # 1. 备份原源文件(容器内执行)
  2. mv /etc/apk/repositories /etc/apk/repositories.bak
  3. # 2. 写入阿里云国内源(适配 Alpine v3.23)
  4. echo "https://mirrors.aliyun.com/alpine/v3.23/main/" > /etc/apk/repositories
  5. echo "https://mirrors.aliyun.com/alpine/v3.23/community/" >> /etc/apk/repositories
复制代码
进行build:
  1. # 1. 定义镜像名称(自定义,方便识别)
  2. export OPENCLAW_IMAGE=openclaw:local
  3. # 2. 定义 apt 包(Alpine 系统用不到,留空即可)
  4. export OPENCLAW_DOCKER_APT_PACKAGES=""
  5. docker build \
  6.    --build-arg "OPENCLAW_DOCKER_APT_PACKAGES=${OPENCLAW_DOCKER_APT_PACKAGES}" \
  7.    -t "${OPENCLAW_IMAGE}" \
  8.    -f /workspace/openclaw/Dockerfile \
  9.    /workspace/openclaw  
复制代码
注意这里又会有个错误,是关于npm link的,如下图:
在Windows docker desktop中编译、运行OpenClaw(上篇)-2.png


这里需要做两件事:
1. 在dind容器里主动创建相关目录:
  1. mkdir /usr/local/lib/node_modules
复制代码
2. 修改Openclaw的Dockerfile,在“RUN npm link”前,加入USER root。使用root身份执行“RUN npm link”,执行后再切回node用户。
  1. USER root
  2. RUN npm link
  3. USER node
复制代码
解决上述问题后就可以导出image的tar文件了。
导出tar
  1. docker images
  2. docker save -o /workspace/openclaw-local.tar openclaw:local
复制代码
如果你的/workspace和windows的对应目录(我映射的是“D:\ProgramData\Docker-Volume\dind”)映射正确的话,就可以去windows的对应目录下找到openclaw-local.tar文件了。
在Windows docker desktop中编译、运行OpenClaw(上篇)-3.png



原文地址:https://blog.csdn.net/rav009/article/details/158464797
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题
阅读排行更多+

Powered by Discuz! X3.4© 2001-2013 Discuz Team.( 京ICP备17022993号-3 )