(给DotNet加星标,提升.Net技能)转自:农码一生cnblogs.com/zhaopei/p/raspberrypi-docker-netcore.html 树莓派是什么 树莓派就是一个卡片大小的迷你电脑。 安装系统 有了电脑,我们当然得先安装系统。 系统下载 https://www.raspberrypi.org/downloads/raspbian/ ,我选择的Raspbian Stretch Lite,不带界面的最小安装。 下载win32diskimager(烧录系统) https://sourceforge.net/projects/win32diskimager/ 下载Advanced IP Scanner(扫描工具,用来扫描树莓派的ip) http://www.tucows.com/download.html?software_id=267216&t=2 开始烧录 打开win32diskimager,插上读卡器。 完成后在sd卡根目录添加两个文件ssh wpa_supplicant.conf wpa_supplicant.conf的内容 准备工作 把SD插入树莓派,然后插上电源线。 插上电源它就会自动开机启动了。使用Advanced IP Scanner扫描树莓派的ip(如果过了两分钟还是没有扫描到,可以尝试重新往SD添加wpa_supplicant.conf文件) 然后使用xshell连接。从现在开始,后面的操作你会感觉和普通linux没太大区别。 更换国内源(为了提高下载速度) sudo nano /etc/apt/sources.list 安装自己想要的软件 sudo apt-get install vim #安装vim 另一种连接到树莓派的方式 如果上面的方式失败。你可以再准备一个网线,分别插入树莓派和笔记本。 然后打开“网络和共享中心”,会多了一个本来连接。点击上面的正常网络。 然后WIN + R,cmd进入命令行,输入 arp -a查看网络ip。 一般情况第一个ip就是树莓派的ip。(这里我显示不是,因为我已经在无线连接设置了ip) 静态IP设置 sudo vi /etc/dhcpcd.conf 防火墙 sudo apt-get install ufw #安装 安装Docker curl -sSL https://get.docker.com | sudo sh 运行.NET Coer程序 实际上树莓派和我们平时使用的PC或云主机还是有区别的,树莓派是ARM架构。而我们平时用的PC、云主机一般都是x86架构。 也就是说我们在PC机上能跑的程序放树莓派上很可能跑不起来,除非你做了ARM平台的发布。如:dotnet publish -r debian-arm -c Release 所有运行平台 遇到的问题和解决方法 正常情况我们Dockerfile可能是这样写的。 #基础镜像(用来构建镜像) 这样在我们PC的Linux上没有任何问题。把docker镜像上传,然后在树莓派上下载运行。你会发现报错exec user process caused "exec format error"。 然后我又尝试直接在树莓派上编译运行,居然成功了。因性能问题,本以为会编译失败的。(说明树莓派的性能真不错)不过树莓派毕竟不是PC,性能肯定会跟不上。 所以还是得想办法在普通PC编译,然后在树莓派上运行。 修改改Dockerfile # ####修改##### 这里运行镜像改成arm32v7,也就是改成树莓派的CUP架构 结果还是报错,最后修改成 #基础镜像(用来构建镜像) 成功运行,完美。(RUN是在docker build的时候执行,而CMD 在docker run 时运行) 至于最开始的Dockerfile文件为什么也可以在树莓派上编译运行。那是因为微软提供的docker镜像做了处理,pull的时候会识别环境然后下载对应的镜像。、 我们可以通过docker history --no-trunc 镜像ID查看历史构建命令 树莓派实例演示 演示地址:http://111.231.110.49:5088/ 本演示地址是我本地树莓派通过内网穿透的方式提供,也就是说你方式的直接是我家里的树莓派。因为内网网速问题,你访问速度可能会很慢。 因为树莓派耗电量低,环保无噪音。不仅可以996甚至7*24都没问题,一个月耗电也就三四度。所以可以做很多有趣的东西,随时待命可唤醒。 结束 最后给大家推荐一个开源项目quartzui:https://github.com/zhaopeiym/quartzui 基于Quartz.NET 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 推荐阅读 (点击标题可跳转阅读) 基于SVN的.NET持续集成工具 使用高性能Pipelines构建.NET通讯程序 Docker在Linux上托管 ASP.NET Core应用程序 看完本文有收获?请转发分享给更多人 关注「DotNet」加星标,提升.Net技能 好文章,我在看❤️ ---------------------------------------------------------------------------------------------------------------------- 我们尊重原创,也注重分享,文章来源于微信公众号:DotNet,建议关注公众号查看原文。如若侵权请联系qter@qter.org。 ---------------------------------------------------------------------------------------------------------------------- |