发布至docker for windows.

提示:

image operating system "windows" cannot be used on this platform

解决:

网上查了,说是运行环境不对,要在win虚拟机上执行,都是把docker的环境切换成windows。

不过我们如果在创建项目的时候,选择docker文件是“linux”版本,就不需要windows版本,所以我们保持docker默认的linux版本,只需要确保新建项目时生成的DockerFile,不是基于windows就好。

由于是树莓派,这里准备把aspnetcore2.1项目,发布为 linux-arm 方式。

# 首先,定位到要发布的项目根目录,也就是csproj文件所在位置,按住shift键右击,选择在此处打开命令行/powershell,两个选项差不多这个看系统设定。
# 以 linux-arm 方式发布
dotnet publish -c Release -r linux-arm

之后,我们将目光放到树莓派上,我用的是三代,也就是ARMv7,所以core sdk是没法装的,只能使用runtime的方式,所以最简单的DockerFile如下:

# 添加基础镜像:docker会从网络下载这个镜像
FROM microsoft/dotnet:2.1-sdk-stretch-arm32v7 AS build
MAINTAINER suntai
#容器中系统的工作空间
WORKDIR /app
#拷贝当前文件夹下的文件到容器中系统的工作空间(注意:“.”后面有空格)
COPY . /app #设置程序要侦听的端口
EXPOSE 80
# 下面这里是dotnetcore runtimez执行方式
ENTRYPOINT ["./WebCoreHost"]

之后就可以通过树莓派开启ssl,用sftp从微软平台传文件到树莓派的linux平台了。当然要传输的目录就是刚才生成的目录,则你可能要拷贝的目录就是

bin\Release\netcoreapp2.\linux-arm\publish\

先直接运行下试试,进入我们程序所在位置。

# 我们先把程序入口点设置为可运行,当然你可以设置权限为755,也可以用+x方式
sudo chmod +x ./WebCoreHost
# 然后我们基于runtime执行
./WebCoreHost
# aspnetcore runtime会执行程序,如果什么都不管的话,是启用5000端口。

当然,之后如果你想结束程序测试,或者端口被占了,可以kill掉程序

# 显示占用端口的程序
sudo netstat -ltp
# 结束指定程序,比如说程序标识是233
sudo kill

在树莓派上创建容器并运行程序,注意句点的位置,表示操作当前目录(linux docker for aspnetcore)

# 将当前目录添加到为docker镜像,起一个别名叫做aspnetapp。
docker build -t aspnetapp .
# 以关闭后自动销毁的方式,启动一个容器,侦听外部的8000端口,并转发至程序内部的80端口
docker run --rm -it -p : aspnetapp

提升当前操作用户操作Docker的权限,不需要sudo,也能解决 permission denied

# 如果还没有 docker group 就添加一个
sudo groupadd docker # 将用户加入该 group 内。然后退出并重新登录就生效啦
sudo gpasswd -a ${USER} docker # 重启 docker 服务
sudo service docker restart # 切换当前会话到新 group 或者重启 X 会话
newgrp - docker

常用的Docker容器和镜像操作

# 停用全部正在运行的容器
docker stop $(docker ps -q) # 删除全部容器
docker rm $(docker ps -aq) # 一条命令实现停用并删除容器
docker stop $(docker ps -q) & docker rm $(docker ps -aq) # 删除所有镜像
docker rmi $(docker images -q) # 停止并删除none镜像
docker stop $(docker ps -a | grep "Exited" | awk '{print $1 }')
docker rm $(docker ps -a | grep "Exited" | awk '{print $1 }')

aspnetcore 2.1 发布到树莓派3linux的艰辛路程的更多相关文章

  1. aspnetcore webapi 解决发布以后每隔一段时间请求变缓慢

    项目:netcore webapi 3.1 平台:windows server 2008 r2 服务器:IIS 7.5 项目发布到IIS以后第一次请求特别慢大概7.8秒,然后每隔5分钟请求一次大概2. ...

  2. 使用脚本将AspNetCore发布到IIS上

    首先你必须要了解的是,没有脚本的情况下,如何把AspNetCore的应用发布到IIS上. 大致分为这些步骤: 安装MS C++ 2015 x86&x64 安装正确版本的.NET Core Ru ...

  3. 在树莓派2上安装 Windows 10

    微软在2015年4月29日发布了树莓派玩家期待已久的 Windows 10 物联网核心预览版(Windows 10 IoT Core Insider Preview Image for Raspber ...

  4. OpenEuler树莓派基础实验

    OpenEuler树莓派基础实验 1.任务详情 1. 参考https://www.cnblogs.com/rocedu/p/14615565.html 完成OpenEuler的安装,提交过程博客和截图 ...

  5. crontab执行时间和系统时间不一致

    最近发现一个非常奇怪的问题,症状如下: crontab 定时任务 配置时间 是 10 5 * * * (每日凌晨5点10分执行) 运行脚本时间却是 18:10左右 Dec 24 05:10:01 ht ...

  6. ASP.NET Core在Azure Kubernetes Service中的部署和管理

    目录 ASP.NET Core在Azure Kubernetes Service中的部署和管理 目标 准备工作 注册 Azure 账户 AKS文档 进入Azure门户(控制台) 安装 Azure Cl ...

  7. ASP.NET Core 2.0 Preview 1 中贴心的新特性

    西雅图时间5月10日,微软在 Build 2017 大会上发布了 ASP.NET Core 2.0 Preview 1 ( 详见 Announcing ASP.NET 2.0.0-Preview1 a ...

  8. Asp.Net Core 应用配置

    五种读取方式 五种读取方式依赖于 IConfiguration 和 IConfigurationRoot 对象 一.初级写法 //不区分大小写 string connectionString = _c ...

  9. CentOS 7 ARM 版发布:支持树莓派2/香蕉派/CubieTruck

    CentOS 7 ARM 版发布:支持树莓派2/香蕉派/CubieTruck 来自CentOS团队的Karanbir Singh很高兴地宣布,面向ARM硬件架构的CentOS 7 Linux已经正式发 ...

随机推荐

  1. 021.9 IO流 流总结

    ###################################################################################IO流的规律总结:解决的问题,开发 ...

  2. Why Reactive(Cocoa)?-时间线、输入、输出、复杂性、异步、状态、聚合

    To put it another way, the output at any one time is the result of combining all inputs. The output ...

  3. 【bzoj3456】 城市规划

    题目 一句话题意,无向连通图计数 技不如人,甘拜下风 设\(f_i\)表示\(i\)个节点构成的无向连通图数量 之后...之后就不会了 于是抄题解 考虑容斥 \[f_i=t_i-\sum_{j=1}^ ...

  4. Python常用库之三:Matplotlib

    导入模块 import matplotlib.pyplot as plt import seaborn as sb 绘制条形图 countplot(data:数据集, x:x坐标轴, color:条形 ...

  5. Spring framework 反序列化的漏洞

    理解这个漏洞需要先看freebuff上的jdni的小例子. jndi注入在jdk8u121绕过参考这俩篇文章: https://bl4ck.in/tricks/2019/01/04/JNDI-Inje ...

  6. virtualbox+vagrant学习-5-Boxes-2-Box Versioning

    Box Versioning 从Vagrant 1.5版本开始, box支持版本控制.这允许创建box的人将更新推送到box中,使用box的人有一个简单的工作流,用于检查更新.更新box以及查看发生了 ...

  7. priority_queue详解

    priority_queue是一个安排好的顺序存储的队列,队首是优先级最高的元素. Template<class T , class Container = vector<T> , ...

  8. selenium断言的分类

    操作(action).辅助(accessors)和断言(assertion): 操作action: 模拟用户与 Web 应用程序的交互. 辅助accessors: 这是辅助工具.用于检查应用程序的状态 ...

  9. 一篇很好的解释了.Net Core, .Net Framework, .Net standard library, Xamarin 之间关系的文章 (转载)

    Introducing .NET Standard In my last post, I talked about how we want to make porting to .NET Core e ...

  10. 爬虫 - xpath 匹配

    例题 import lxml.html test_data = """ <div> <ul> <li class="item-0& ...