
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Nerves 是一个基于函数式语言 Elixir 的新兴且出色的IoT框架。
本Dockerfile能让您通过最少步骤获取Nerves开发环境。该Docker解决方案具有以下优势:
您还可通过Visual Studio Code及其扩展获得更优的开发体验。 了解更多信息: https://github.com/NervesJP/nerves-devcontainer
从 https://hub.docker.com/r/nervesjp/nerves
您可以使用预构建镜像尝试Nerves开发:
bash$ docker pull nervesjp/nerves $ docker run -it -w /workspace nervesjp/nerves root@6e304327bd2e:/workspace#
从 https://github.com/NervesJP/docker-nerves
您可以本地构建Docker镜像并根据需求自定义:
bash$ git clone https://github.com/NervesJP/docker-nerves $ cd docker-nerves $ docker build -t docker-nerves . $ docker run -it -w /workspace docker-nerves root@9bc88d0fc7b8:/workspace# pwd /workspace root@9bc88d0fc7b8:/workspace# echo ${HOME} /root root@9bc88d0fc7b8:/workspace# ls ~/.mix/* /root/.mix/rebar /root/.mix/rebar3 /root/.mix/archives: hex-0.21.2 nerves_bootstrap-1.10.2
下表列出了Docker Hub上预构建镜像的工具版本。若您本地构建Docker容器,请通过括号中的方法检查版本。粗体表示与上一版本相比的更新。
| 名称 | 检查方法 | v0.3.0 | v0.2.6 | v0.2.5 | v0.2.4 | v0.2.3 | v0.2.2 | v0.2.1 | v0.2 | v0.1.x |
|---|---|---|---|---|---|---|---|---|---|---|
| Debian | cat /etc/debian_version | 10.11 | 10.9 | 10.8 | 10.8 | 10.7 | 10.7 | 10.7 | 10.6 | 10.6 |
| https://github.com/erlang/otp | erl -V 或 mix hex.info | 24.1.7 | 23.3.4.1 | 23.2.7 | 23.2.5 | 23.2.3 | 23.2.3 | 23.1.5 | 23.1.4 | 23.1.4 |
| https://github.com/elixir-lang/elixir | elixir -v | 1.12.3-otp-24 | 1.11.4-otp-23 | 1.11.3-otp-23 | 1.11.3-otp-23 | 1.11.3-otp-23 | 1.11.3-otp-23 | 1.11.2-otp-23 | 1.11.2-otp-23 | 1.11.2-otp-23 |
| https://github.com/nerves-project/nerves | mix nerves.info | 1.7.12 | 1.7.6 | 1.7.4 | 1.7.4 | 1.7.3 | 1.7.2 | 1.7.1 | 1.7.1 | 1.7.0 |
| https://github.com/nerves-project/nerves_bootstrap | ls ~/.mix/* | 1.10.5 | 1.10.2 | 1.10.2 | 1.10.2 | 1.10.1 | 1.10.1 | 1.10.1 | 1.10.0 | 1.10.0 |
| https://github.com/hexpm/hex | ls ~/.mix/* | 0.21.3 | 0.21.2 | 0.21.1 | 0.21.1 | 0.21.1 | 0.21.1 | 0.20.6 | 0.20.6 | 0.20.6 |
| https://github.com/rebar/rebar/https://github.com/erlang/rebar3 | rebar -V rebar3 -v | 2.6.4/3.17.0 | 2.6.4/3.16.1 | 2.6.4/3.14.4 | 2.6.4/3.14.3 | 2.6.4/3.14.3 | 2.6.4/3.14.3 | 2.6.4/3.14.3 | 2.6.4/3.14.3 | 2.6.4/3.14.2 |
| https://github.com/fwup-home/fwup | fwup --version | 1.9.0 | 1.8.4 | 1.8.4 | 1.8.3 | 1.8.3 | 1.8.3 | 1.8.3 | 1.8.2 | 1.8.2 |
本仓库旨在提供最小化和最通用的功能,您可根据需要自定义Dockerfile。如有通用有用的改进建议,欢迎通过Issue或PR提出。以下是一些使用Nerves Docker环境的便捷方法。Docker提供了许多CLI选项功能。
挂载主机卷
由于Docker镜像内的文件系统会在镜像重建/执行时消失,挂载主机卷来保存Nerves项目文件非常有用。-v ${PWD}:/workspace 可将主机当前目录挂载到Docker镜像中:
bash$ docker run -it -w /workspace -v ${PWD}:/workspace docker-nerves
挂载Elixir/Nerves相关的配置目录(如 .hex/、.nerves/ 和 .ssh/)也很高效。以下示例将主机和镜像的 ${HOME} 中的配置文件进行绑定:
bash$ docker run -it -w /workspace -v ${PWD}:/workspace \ -v ~/.hex:/root/.hex -v ~/.nerves:/root/.nerves -v ~/.ssh:/root/.ssh docker-nerves
设置Nerves开发环境变量
如果您的Nerves目标设备已确定且固定,锁定环境变量 ${MIX_TARGET} 可提高开发效率。以下是运行Docker容器时设置为 rpi3 的示例:
bash$ docker run -it -w /workspace -e MIX_TARGET=rpi3 docker-nerves root@deda9932d7e3:/workspace# echo $MIX_TARGET rpi3
如果需要设置多个变量(例如为vintage_net_wifi配置WiFi信息),--env-file 会很高效。您可以从本文的"连接到目标设备"部分了解详情:
bash$ cat env.list MIX_TARGET=rpi3 WIFI_SSID=xxxxxxxx WIFI_PSK=yyyyyyyy $ docker run -it -w /workspace --env-file env.list docker-nerves root@cf815278594a:/workspace# echo $MIX_TARGET rpi3 root@cf815278594a:/workspace# echo $WIFI_SSID xxxxxxxx root@cf815278594a:/workspace# echo $WIFI_PSK yyyyyyyy
此https://github.com/NervesJP/docker-nerves%E4%B8%8Ehttps://hub.docker.com/r/nervesjp/nerves%E5%85%B3%E8%81%94%EF%BC%8C%E5%8F%AF%E8%87%AA%E5%8A%A8%E6%9E%84%E5%BB%BA%E9%95%9C%E5%83%8F%E3%80%82%E4%BB%A5%E4%B8%8B%E6%98%AF%E7%BB%B4%E6%8A%A4%E7%AD%96%E7%95%A5%E5%8F%8Ahttps://github.com/NervesJP/docker-nerves/branches/https://github.com/NervesJP/docker-nerves/releases%E4%B8%8Ehttps://hub.docker.com/r/nervesjp/nerves/tags%E7%9A%84%E5%AF%B9%E5%BA%94%E5%85%B3%E7%B3%BB%EF%BC%9A
main:最新维护版本,对应Docker标签 :latestdev:Dockerfile改进开发中,对应Docker标签 :devvX.Y:Dockerfile和预构建镜像的发布版本,包含从上一版本开始的功能改进(如工具版本更新),对应Docker标签 :X.Ydoc:仅修改文档,不关联Docker标签将Nerves固件烧录到microSD卡
Docker有严格的策略以避免影响主机环境,且在Windows和macOS主机上,由于需要 hypervisor 级别的支持,无法将USB设备(或串口)直通到容器中。因此,无法从Docker镜像中执行 mix burn,因为没有权限以root用户访问主机的 /dev。
一种烧录Nerves固件的方法是直接在主机上使用 fwup(Nerves固件构建/烧录工具):https://github.com/fhunleth/fwup
按照https://github.com/fhunleth/fwup#installing%E5%9C%A8%E4%B8%BB%E6%9C%BA%E4%B8%8A%E5%AE%89%E8%A3%85 fwup 后,请在主机终端(例如管理员权限的PowerShell、Terminal.app)中执行以下命令:
bash$ cd <your_nerves_project_dir> $ fwup _build/${MIX_TARGET}_dev/nerves/images/<project_name>.fw
若主机使用Linux,您可能可以通过 privileged 选项从Docker环境访问microSD。您可能需要根据实际情况使用不同的 /dev/ 地址:
bash$ docker run -it -w /workspace -v ${PWD}:/workspace \ -v /dev/sdb:/dev/sdb --privileged docker-nerves
如有更好的解决方案,欢迎告知!(https://github.com/NervesJP/docker-nerves/issues/1)
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务