
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
此Dockerfile构建了一个独立版本的emsdk,使emscripten无需在主机系统上进行其他安装即可使用。该镜像发布于https://hub.docker.com/u/emscripten/emsdk。
以下是使用该容器编译"hello-world"程序的示例:
bash# 创建helloworld.cpp cat << EOF > helloworld.cpp #include <iostream> int main() { std::cout << "Hello World!" << std::endl; return 0; } EOF
bash# 使用docker镜像编译 docker run \ --rm \ -v $(pwd):/src \ -u $(id -u):$(id -g) \ docker.xuanyuan.run/emscripten/emsdk \ emcc helloworld.cpp -o helloworld.js # 在主机上执行 node helloworld.js
| 部分 | 描述 |
|---|---|
docker run | 标准的在容器中运行命令的指令 |
--rm | 执行后移除容器(优化) |
-v $(pwd):/src | 将主机当前目录挂载到容器中的/src路径 提示:这有助于排查问题,因为我们保留了与主机完全相同的路径。在这种情况下,现代编辑器(如Sublime、Atom、VS Code)允许我们Ctrl+点击有问题的文件 |
-u $(id -u):$(id -g) | 以与本地用户相同的UID和GID的非root用户身份运行容器。因此,由此产生的所有文件都可被非root用户访问 |
emscripten/emsdk | 获取此容器的最新标签 |
emcc helloworld.cpp -o helloworld.js | 在容器内执行emcc命令及后续参数,实际编译源代码 |
构建此镜像需要指定以下构建参数:
| 参数 | 描述 |
|---|---|
EMSCRIPTEN_VERSION | Emscripten的已发布版本之一。例如1.38.45可与 -upstream变体一起使用,如1.38.45-upstream最低支持版本为1.38.40 |
此步骤将在本地机器上按给定标签构建Dockerfile:
bash# 使用docker docker build \ --network host \ --build-arg=EMSCRIPTEN_VERSION=1.38.43-upstream \ --tag emscripten/emsdk:1.38.43-upstream \ .
bash# 使用预定义的make目标 make version=1.38.43-upstream build
如果直接使用docker build命令,指定的--tag应与Emscripten的发布版本匹配(可通过执行emsdk list查看非 legacy 版本列表)。
此步骤将本地镜像推送到默认Docker仓库。需要确保已通过docker cli登录(docker login)并有权限推送到该仓库。
bash# 使用docker docker push emscripten/emsdk:1.38.43-upstream
bash# 使用预定义的make目标 make version=1.38.43-upstream push
如果推送最新版本,还应将该版本标记为latest或latest-upstream并推送:
bash# 使用docker cli # 对于fastcomp变体(默认后端) docker tag emscripten/emsdk:1.38.43 emscripten/emsdk:latest docker push emscripten/emsdk:latest # 对于upstream变体 docker tag emscripten/emsdk:1.38.43-upstream emscripten/emsdk:latest-upstream docker push emscripten/emsdk:latest-upstream
bash# 使用预定义的make目标 make version=1.38.43-upstream alias=latest-upstream push
如果您的项目使用此镜像未提供的包,您可能需要:
创建自己的Dockerfile:
dockerfile# 指向任何您认为适合扩展的基础镜像 FROM docker.xuanyuan.run/emscripten/emsdk:1.38.25 # 安装项目所需的工具,例如ninja-build RUN apt update && apt install -y ninja-build
构建它:
shelldocker build -t extended_emscripten .
测试:
shelldocker run --rm docker.xuanyuan.run/extended_emscripten ninja --version # Python 2.7.16
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务