在 樹莓派(Raspberry PI) 中使用 Docker 運行 aspnetcore/dotnetcore 應用


本文主要利用 Microsoft 提供的 Dockerfile 進行安裝。

雖然Raspberry PI 3 CPU支持 armv8 指令集 ,但是在 docker info 還是識別為 “ armv7l”。所以安裝鏡像時一律選用 ARMv7 的鏡像。

關於樹莓派與 .NET Core 需要注意的地方

  1. .NET Core 2.0 支持 Arm32,提供運行時,但不提供SDK
  2. .NET Core 2.0 不支持 Pi Zero
  3. dotnet 社區對 PI 的使用指南 RaspberryPiInstructions

0.安裝Docker

官方安裝說明 :
Debian / Raspbian /Ubuntu
不在贅述。

1.准備 .NET Core Runtime 鏡像

提供兩種方法

  1. 前往Github 自行編譯 Dockerfile

    build 命令如下

    docker build -t <name>/dotnet:2.0-runtime-stretch-arm32v7 .
    
  2. 使用 Docker Microsoft 官方的倉庫(Repository)

    pull 命令如下

    docker pull microsoft/dotnet:2.0-runtime-stretch-arm32v7
    

提示:

  1. 以上生成的 Runtime 版本為 2.0.7 (2018/04/25)。
  2. 雖然官方說不支持提供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:

  1. 關於Build 更多命令,請參考docs.microsoft.com
  2. 關於運行時標識符的縮寫(RID),請參考docs.microsoft.com
  3. 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 中國大陸許可協議進行許可,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM