在 树莓派(Raspberry PI) 中使用 Docker 运行 aspnetcore/dotnetcore 应用
本文主要利用 Microsoft 提供的 Dockerfile 进行安装。
虽然Raspberry PI 3 CPU支持 armv8 指令集 ,但是在 docker info
还是识别为 “ armv7l”。所以安装镜像时一律选用 ARMv7 的镜像。
关于树莓派与 .NET Core 需要注意的地方
- .NET Core 2.0 支持 Arm32,提供运行时,但不提供SDK
- .NET Core 2.0 不支持 Pi Zero
- dotnet 社区对 PI 的使用指南 RaspberryPiInstructions
0.安装Docker
官方安装说明 :
Debian / Raspbian /Ubuntu
不在赘述。
1.准备 .NET Core Runtime 镜像
提供两种方法
-
前往Github 自行编译 Dockerfile
build 命令如下
docker build -t <name>/dotnet:2.0-runtime-stretch-arm32v7 .
-
使用 Docker Microsoft 官方的仓库(Repository)
pull 命令如下
docker pull microsoft/dotnet:2.0-runtime-stretch-arm32v7
提示:
- 以上生成的 Runtime 版本为 2.0.7 (2018/04/25)。
- 虽然官方说不支持提供SDK镜像,但笔者还是找到了"官方"的.NET Core 2.1-preview2镜像。
pull 命令如下
docker pull microsoft/dotnet:2.1-sdk-stretch-arm32v7
2. 制作镜像
首先编译项目,其次制作Dockerfile
编译项目示例
dotnet publish -c Release -r debian-arm
Tip:
- 关于Build 更多命令,请参考docs.microsoft.com
- 关于运行时标识符的缩写(RID),请参考docs.microsoft.com
- RID 清单,请参考github.com
Dockerfile 如下
FROM microsoft/dotnet:2.0-runtime-stretch-arm32v7
WORKDIR /app
COPY . .
ENTRYPOINT ["dotnet", "xxx.dll"]
使用dotnet build 命令后,在输出文件夹内找到publish 文件夹,上传文件夹内容及Dockerfile到树莓派,然后准备生成镜像
docker build 命令如下
docker build -t <name>/<company>:<tag> .
注意命令中需要指定上下文位置,笔者使用的是相对位置"."
最后运行容器,即可看到效果
docker run -p 80:80 --name <container_name> -d <name>/<company>:<tag>
其他常用命令
删除虚悬镜像(dangling image)
docker image prune
4.参考链接
microsoft/dotnet
https://hub.docker.com/r/microsoft/dotnet/
arm32v7
https://hub.docker.com/u/arm32v7/
How to install .NET Core on Raspberry Pi
https://dotnetcorechris.github.io/dotnetcoreonraspberrypi.html
本文采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
分类:
Docker
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人