600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 树莓派也跑Docker和.NET Core

树莓派也跑Docker和.NET Core

时间:2020-01-15 06:41:45

相关推荐

树莓派也跑Docker和.NET Core

树莓派就是一个卡片大小的迷你电脑。

有了电脑,我们当然得先安装系统。

系统下载

/downloads/raspbian/,我选择的Raspbian Stretch Lite,不带界面的最小安装。

下载win32diskimager(烧录系统)

/projects/win32diskimager/

下载Advanced IP Scanner(扫描工具,用来扫描树莓派的ip)

/download.html?software_id=267216&t=2

开始烧录

打开win32diskimager,插上读卡器。

完成后在sd卡根目录添加两个文件sshwpa_supplicant.conf

wpa_supplicant.conf的内容

把SD插入树莓派,然后插上电源线。

插上电源它就会自动开机启动了。使用Advanced IP Scanner扫描树莓派的ip(如果过了两分钟还是没有扫描到,可以尝试重新往SD添加wpa_supplicant.conf文件)

然后使用xshell连接。从现在开始,后面的操作你会感觉和普通linux没太大区别。

更换国内源(为了提高下载速度)

sudo nano /etc/apt/sources.list

deb http:

deb-src http:

sudo nano /etc/apt/sources.list.d/raspi.list

deb http:

deb-src http:

sudo apt-get update

安装自己想要的软件

sudo apt-get install vim

sudo apt-get install lrzsz

sudo apt-get install git

如果上面的方式失败。你可以再准备一个网线,分别插入树莓派和笔记本。

然后打开“网络和共享中心”,会多了一个本来连接。点击上面的正常网络。

然后WIN + R,cmd进入命令行,输入 arp -a查看网络ip。

一般情况第一个ip就是树莓派的ip。(这里我显示不是,因为我已经在无线连接设置了ip)

sudo vi /etc/dhcpcd.conf

interface wlan0

static ip_address=IP/24

static routers=192.168.1.1

static domain_name_servers=114.114.114.114

sudo apt-get install ufw

sudo ufw enable

sudo ufw default deny

sudo ufw disable

sudo ufw status

sudo ufw allow 22

sudo ufw allow 80

sudo ufw delete allow 80

curl -sSL | sudo sh

sudo systemctl enable docker

sudo systemctl start docker

sudo usermod -aG docker pi

实际上树莓派和我们平时使用的PC或云主机还是有区别的,树莓派是ARM架构。而我们平时用的PC、云主机一般都是x86架构。

也就是说我们在PC机上能跑的程序放树莓派上很可能跑不起来,除非你做了ARM平台的发布。如:dotnet publish -r debian-arm -c Release

所有运行平台

https:

https:

.netcore的docker镜像地址

https:

https:

arm平台发布命令

dotnet publish -c Release -r linux-arm

正常情况我们Dockerfile可能是这样写的。

FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base

WORKDIR /app

EXPOSE 80

ENV TZ=Asia/Shanghai

RUN cp /usr/share/zoneinfo/Asia/Shanghai /usr/share/zoneinfo/Asia/Beijing

RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

FROM microsoft/dotnet:2.1-sdk AS publish

WORKDIR /src

COPY . .

WORKDIR /src/Host

RUN dotnet publish -c Release -o /app

FROM base AS final

WORKDIR /app

COPY --from=publish /app .

CMD ["dotnet", "Host.dll"]

这样在我们PC的Linux上没有任何问题。把docker镜像上传,然后在树莓派上下载运行。你会发现报错exec user process caused "exec format error"

然后我又尝试直接在树莓派上编译运行,居然成功了。因性能问题,本以为会编译失败的。(说明树莓派的性能真不错)不过树莓派毕竟不是PC,性能肯定会跟不上。

所以还是得想办法在普通PC编译,然后在树莓派上运行。

修改改Dockerfile

FROM /dotnet/core/aspnet:2.1-stretch-slim-arm32v7 AS base

WORKDIR /app

EXPOSE 80

ENV TZ=Asia/Shanghai

RUN cp /usr/share/zoneinfo/Asia/Shanghai /usr/share/zoneinfo/Asia/Beijing

RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

FROM microsoft/dotnet:2.1-sdk AS publish

WORKDIR /src

COPY . .

WORKDIR /src/Host

RUN dotnet publish -c Release -o /app

FROM base AS final

WORKDIR /app

COPY --from=publish /app .

CMD ["dotnet", "Host.dll"]

结果还是报错,最后修改成

FROM /dotnet/core/aspnet:2.1-stretch-slim-arm32v7 AS base

WORKDIR /app

EXPOSE 80

ENV TZ=Asia/Shanghai

CMD cp /usr/share/zoneinfo/Asia/Shanghai /usr/share/zoneinfo/Asia/Beijing

CMD ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

FROM /dotnet/core/sdk:2.1 AS publish

WORKDIR /src

COPY . .

WORKDIR /src/Host

RUN dotnet publish -r debian-arm -c Release -o /app

FROM base AS final

WORKDIR /app

COPY --from=publish /app .

CMD ["dotnet", "Host.dll"]

成功运行,完美。(RUN是在docker build的时候执行,而CMD 在docker run 时运行)

至于最开始的Dockerfile文件为什么也可以在树莓派上编译运行。那是因为微软提供的docker镜像做了处理,pull的时候会识别环境然后下载对应的镜像。

我们可以通过docker history --no-trunc 镜像ID查看历史构建命令

演示地址:http://111.231.110.49:5088/

本演示地址是我本地树莓派通过内网穿透的方式提供,也就是说你方式的直接是我家里的树莓派。因为内网网速问题,你访问速度可能会很慢。

最后给大家推荐一个开源项目quartzui:/zhaopeiym/quartzui

基于 3.0的web管理界面,开箱即用。也可以完美运行在树莓派上。

docker run -v /fileData/quartzuifile:/app/File --restart=unless-stopped --privileged=true --name quartzui -dp 5088:80 bennyzhao/quartzui:RaspberryPi

运行在普通PC或云主机上

docker run -v /fileData/quartzuifile:/app/File --restart=unless-stopped --privileged=true --name quartzui -dp 5088:80 bennyzhao/quartzui

新建QQ群工控物联:995475200

/blog//06/raspberry-pi-tutorial.html

/haogj/p/4621926.html

//09/docker-official-images-now-multi-platform/

原文地址:/zhaopei/p/raspberrypi-docker-netcore.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。