跨平台运行ASP.NET Core 1.0
- ASP.NET 5 更名为 ASP.NET Core 1.0
- .NET Core 更名为 .NET Core 1.0
- Entity Framework 7 更名为 Entity Framework Core 1.0 或者简称 EF Core 1.0
- .NET Core SDK=.Net Core+.NET Core command-line(简称CLI\.NET CLI\.NET Core CLI,dotnet commands)
- .NET Core=基础类库.NET Core Framework(CoreFX)+运行时.NET Core Runtime(CoreCLR)+编译器管理(如管理编译器Roslyn)+More
1、环境

2、安装docker
首先查看CentOS的内核版本(CentOS7系统必须为64位,内核必须3.10及以上)
uname -r
3.10.-.el7.x86_64
更新已经安装的包
sudo yum update
安装docker
curl -fsSL https://get.docker.com/ | sh
启动docker
sudo service docker start 或 systemctl start docker
运行docker hello world demo
sudo docker run hello-world
3、创建docker用户组
(2) sudo usermod -aG docker your_username(你的用户名)(3) 登出再登入控制台
(4) 不带sudo执行docker run hello-world,看是否正确输出Hello world
(5) 设置开机启动sudo chkconfig docker on 或 systemctl enable docker
4、 docker相关概念
-P 或 -p 参数来指定端口映射。docker images //显示所有镜像文件
docker ps -q -a //显示所有容器
docker run -it --name dn_container -d -p : microsoft/dotnet:latest //新增一个容器用于加载 microsoft/dotnet:latest镜像文件,-p host port:container port
docker run -it --name dn_container -d -p 127.0.0.1:: microsoft/dotnet:latest
docker start dn_container //启动容器
docker attach dn_container //关联并进入启动容器,需要先启动容器
docker stop dn_container //停止容器
docker kill $(docker ps -a -q) //强制停止所有容器
docker rm $(docker ps -a -q) //删除所有容器
doker commit ContainerID NewImageName //将容器里的内容提交为新的镜像文件
docker rmi -f 7d9495d03763 //删除所有容器 //标记镜像,push到Docker Hub
docker images
docker tag a66b7258f574 sobit17/sobit-dotnet:1.0.-beta-
docker images
docker login --username=test --email=test@qq.com
docker push sobit17/sobit-dotnet
docker常用命令
5、制作HelloMvc image
mkdir app
cd app
git clone https://github.com/aspnet/cli-samples.git
cd cli-samples
需要显式指定HelloMvc的端口(即使指定的是5000端口),目前尝试过不加下面这段代码,发现默认的5000并不起作用

//拷贝命令
cp -p /root/app/cli-samples/NuGet.Config /root/app/cli-samples/HelloMvc/NuGet.Config


- dotnet:0.0.1-alpha
- dotnet:0.0.1-alpha-onbuild




FROM microsoft/dotnet:latest
RUN mkdir -p /webapp
COPY . /webapp
WORKDIR /webapp
RUN ["dotnet", "restore"] RUN sudo apt-get -y update \
&& sudo apt-get install -y dialog make automake libtool curl
RUN curl -sSL https://github.com/libuv/libuv/archive/v1.8.0.tar.gz | sudo tar zxfv - -C /usr/local/src \
&& cd /usr/local/src/libuv-1.8. \
&& sudo sh autogen.sh \
&& sudo ./configure \
&& sudo make \
&& sudo make install \
&& sudo rm -rf /usr/local/src/libuv-1.8. \
&& cd ~/ \
&& sudo ldconfig EXPOSE
ENTRYPOINT ["dotnet", "run"]
(2)基于dotnet:0.0.1-alpha-onbuild
FROM microsoft/dotnet:0.0.-alpha-onbuild RUN sudo apt-get -y update \
&& sudo apt-get install -y dialog make automake libtool curl
RUN curl -sSL https://github.com/libuv/libuv/archive/v1.8.0.tar.gz | sudo tar zxfv - -C /usr/local/src \
&& cd /usr/local/src/libuv-1.8. \
&& sudo sh autogen.sh \
&& sudo ./configure \
&& sudo make \
&& sudo make install \
&& sudo rm -rf /usr/local/src/libuv-1.8. \
&& cd ~/ \
&& sudo ldconfig EXPOSE
由于.NET Core时刻在更新,所以导致官网NET CLI Preview Docker image 提供的dotnet image更新不及时而在执行dotnet restore时候会报错:unknown keyword platform(主要是dotnet image内部的
如果不确定你当前的dotnet image是否有上述问题,下面会介绍一种检测方法和问题的解决方案
mkdir test
cd test
it clone https://github.com/aspnet/cli-samples.git
cd cli-samples
dotnet restore
查看是否报错
cd ~rm -r test
(2)解决方案
docker run --name dotnet_container -it microsoft/dotnet:0.0.-alpha
如果dotnet_container 未启动,则执行下面命令启动并关联进入
docker start dotnet_container
dokcer attach dotnet_container
查看.NET Core版本(dotnet image中使用的是Ubuntu14.04系统)
dotnet --version
或
dotnet --info

apt-get update
wget https://dotnetcli.blob.core.windows.net/dotnet/beta/Binaries/Latest/dotnet-dev-ubuntu-x64.latest.tar.gz
tar -zxf dotnet-dev-ubuntu-x64.latest.tar.gz -C /usr/bin
或
apt-get update
wget https://dotnetcli.blob.core.windows.net/dotnet/beta/Binaries/Latest/dotnet-dev-ubuntu-x64.latest.tar.gz
tar -zxf dotnet-dev-ubuntu-x64.latest.tar.gz
ln -s /dn_new/dotnet /usr/bin/dotnet
接下来执行下面命令
dotnet --info //查看版本
exit //退出容器
docker images //查找dotnet_container 的ConrainerID
docker commit 3a09b2588478(ContainerID) dotnet_new(new image name) //commit成一个新的image
至此base image制作完毕。
FROM dotnet_new 或 sobit17/sobit-dotnet:1.0.-beta-
RUN mkdir -p /webapp
COPY . /webapp
WORKDIR /webapp
RUN ["dotnet", "restore"] ##备注:安装libuv这一过程其实可以在制作dotnet_new镜像时也安装进去,就不需要下面这段【注释在Dockerfile中需删掉】
RUN sudo apt-get -y update \
&& sudo apt-get install -y dialog make automake libtool curl
RUN curl -sSL https://github.com/libuv/libuv/archive/v1.8.0.tar.gz | sudo tar zxfv - -C /usr/local/src \
&& cd /usr/local/src/libuv-1.8. \
&& sudo sh autogen.sh \
&& sudo ./configure \
&& sudo make \
&& sudo make install \
&& sudo rm -rf /usr/local/src/libuv-1.8. \
&& cd ~/ \
&& sudo ldconfig EXPOSE
ENTRYPOINT ["dotnet", "run"]
所有把HelloMvc制作成image的资料已经准备完毕。

docker build -t hellomvc-image . //记得命令最后有'.'

- 编译试运行:docker run --rm -w /webapp hellomvc-image
- 运行:docker run -t --name web_container -d -p 5100:5600 hellomvc-image


二、在CentOS 7中运行
1、环境
2、安装.NET Core SDK
sudo yum updatemkdir dn_cli
cd dn_cli
wget https://dotnetcli.blob.core.windows.net/dotnet/beta/Binaries/Latest/dotnet-dev-centos-x64.latest.tar.gz
tar -zxf dotnet-dev-centos-x64.latest.tar.gz
尝试执行命令:. /dotnet
提示错误:
Failed to load /root/dotnet/bin/libcoreclr.so, error: libunwind.so.8: cannot open shared object file: No such file or directory
解决方法:
yum install -y libunwind
尝试执行命令:. /dotnet
提示错误:
Failed to initialize CoreCLR, HRESULT: 0x80131500
解决方法:
yum install -y icu
尝试执行命令:. /dotnet --info,正常。
永久保存环境变量
找到/etc/profile文件(当用户第一次登录时,该文件被执行.),在最后面添加:
3、下载cli-samples的HelloMvc例子
cd ~
sudo yum -y install git
mkdir app
cd app
git clone https://github.com/aspnet/cli-samples.git
cd cli-samples
dotnet restore
cd HelloMvc
需要显式指定HelloMvc的端口(即使指定的是5000端口),目前尝试过不加下面这段代码,发现默认的5000并不起作用

4、编译运行HelloMvc
将执行命令的当前目录定位到HelloMvc,并执行下面命令
dotnet run
打开浏览器 http://IP:5600(防火墙和查看网络相关命令请查看本篇文章第四点)
1、安装Ubuntu Installers
apt-get update
mkdir dn_cli
cd dn_cli
wget https://dotnetcli.blob.core.windows.net/dotnet/beta/Installers/Latest/dotnet-host-ubuntu-x64.latest.deb
wget https://dotnetcli.blob.core.windows.net/dotnet/beta/Installers/Latest/dotnet-sharedframework-ubuntu-x64.latest.deb
wget https://dotnetcli.blob.core.windows.net/dotnet/beta/Installers/Latest/dotnet-sdk-ubuntu-x64.latest.deb //安装
dpkg -i dotnet-host-ubuntu-x64.latest.deb
dpkg -i dotnet-sharedframework-ubuntu-x64.latest.deb
dpkg -i dotnet-sdk-ubuntu-x64.latest.deb //如果执行上述安装语句后提示缺少依赖包,可以执行下面命令会自动补全依赖包,然后再重新执行报错的安装语句
apt-get -f install
2、下载cli-samples的HelloMvc例子
cd ~
apt-get -y install git
mkdir app
cd app
git clone https://github.com/aspnet/cli-samples.git
cd cli-samples
dotnet restore
cd HelloMvc
需要显式指定HelloMvc的端口(即使指定的是5000端口),目前尝试过不加下面这段代码,发现默认的5000并不起作用

3、编译运行HelloMvc
dotnet run
打开浏览器 http://IP:5600(防火墙和查看网络相关命令请查看本篇文章第四点)


四、其他
systemctl status firewalld或firewalld.service ##查看firewalld是否启动。active(running)代表启动
systemctl start firewalld ##如果firewalld没启动,可以使用此命令启动
systemctl enable firewalld ##设置为随机器启动
systemctl stop firewalld ##关闭firewalld
systemctl disable firewalld ##清除随机器启动
systemctl restart firewalld ##重启firewalld
firewall-cmd --state ##查看防火墙状态,是否是running
firewall-cmd --list-all ##查看所有规则
firewall-cmd --reload ##重新载入配置,比如添加规则之后,需要执行此命令
firewall-cmd --get-zones ##列出支持的zone
firewall-cmd --get-services##列出支持的服务,在列表中的服务是放行的
firewall-cmd --query-service ftp##查看ftp服务是否支持,返回yes或者no
firewall-cmd --add-service=ftp ##临时开放ftp服务
firewall-cmd --add-service=ftp --permanent##永久开放ftp服务
firewall-cmd --add-service=http --permanent##永久开放http服务
firewall-cmd --remove-service=ftp --permanent##永久移除ftp服务
firewall-cmd --add-port=/tcp --permanent ##永久添加80端口
firewall-cmd --zone=public --add-port=/tcp --permanent ##--zone #作用域
iptables -L -n --line-number #查看防火墙的规则链
iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -I INPUT -p tcp --dport -m state --state NEW -j ACCEPT
iptables -I INPUT -d 172.16.100.1 -p tcp --dport -m state --state NEW -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT #测试不加此条会导致mysql在内部无法连接 查看/etc/sysconfig/iptables文件(记录着防火墙的规则链)
如果没有这个文件,请执行下面命令保存
iptables-save > /etc/sysconfig/iptables
查看保存后的规则
cat /etc/sysconfig/iptables
4、部分网络端口查询命令
netstat -tunlp -a # 查看所有网络端口情况
netstat -l -n #查看监听(Listen)的端口,-n 代表显示端口数字而不是名称
netstat -antp #查看所有建立的TCP连接
相关资料:
- Getting started with .NET Core
- Running ASP.NET 5 applications in Linux Containers with Docker
- Get Started with Docker Engine for Linux
- .NET CLI Preview Docker Image
- Installing ASP.NET 5 On Linux
- Docker Dockerfile详解
- 最新版dotnet-cli下的ASP.NET Core和asp.net mvc【RC2尝鲜】
- ASP.NET Core 1.0 Hello World
- CentOS 7.1下安装dotnet core
作者:B.it
技术收录网站:核心技术(http://www.coretn.cn)
出处:http://www.cnblogs.com/ImBit/p/5375577.html
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
跨平台运行ASP.NET Core 1.0的更多相关文章
- 跨平台运行ASP.NET Core 1.0(转载)
前言 首先提一下微软更名后的叫法: ASP.NET 5 更名为 ASP.NET Core 1.0 .NET Core 更名为 .NET Core 1.0 Entity Framework 7 更名为 ...
- 在 Mac OS 上创建并运行 ASP.NET Core 1.0 网站
var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...
- 【原生态跨平台:ASP.NET Core 1.0(非Mono)在 Ubuntu 14.04 服务器上一对一的配置实现-篇幅1】
鸡冻人心的2016,微软高产年. build 2016后 各种干货层出不穷. 1 Win10 集成了bash ,实现了纳德拉的成诺,Microsoft Love Linux!!! 2 跨平台 ,收 ...
- Ubuntu 安装 CLI 并运行 ASP.NET Core 1.0
Ubuntu 下载地址:http://www.ubuntu.org.cn/download/desktop 注:目前 CLI 的安装命令只支持 Ubuntu 14.04,暂不支持 Ubuntu 14. ...
- Ubuntu & Docker & Consul & Fabio & ASP.NET Core 2.0 微服务跨平台实践
相关博文: Ubuntu 简单安装 Docker Mac OS.Ubuntu 安装及使用 Consul Consul 服务注册与服务发现 Fabio 安装和简单使用 阅读目录: Docker 运行 C ...
- Docker & Consul & Fabio & ASP.NET Core 2.0 微服务跨平台实践
相关博文: Ubuntu 简单安装 Docker Mac OS.Ubuntu 安装及使用 Consul Consul 服务注册与服务发现 Fabio 安装和简单使用 阅读目录: Docker 运行 C ...
- 丙申年把真假美猴王囚禁在容器中跑 ASP.NET Core 1.0
var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...
- 在 Mac OS 上使用 TypeScript 编写 ASP.NET Core 1.0 应用
var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...
- ASP.NET Core 1.0 中的依赖项管理
var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...
随机推荐
- 扫描仪API接入大全:Twain, WIA 或 两者不具有.[换个思路 春暖花开]
最近做和扫描仪接入的扫描应用程序,深深感觉到了来自底层设备和WINDOWS协议的恶意.软件专业,对计算机深层次通知机制和协议,以及与之相连接的机器的接入协议和一些参数,当时并木有认真学习和了解,前一阵 ...
- C#设计模式-装饰者模式
在软件开发中,我们经常想要对一类对象添加不同的功能,例如要给手机添加贴膜,手机挂件,手机外壳等,如果此时利用继承来实现的话,就需要定义无数的类,如StickerPhone(贴膜是手机类).Access ...
- iOS-SDWebimage底层实现原理
其实有些框架的实现原理,并没有想象中那么难,思想也很简单,主要是更新第三方框架的作者对自己写的代码,进行了多层封装,使代码的可读性降低,也就使得框架看起来比较难.我来实现以下SDWebimage的的曾 ...
- TSQL 数据类型转换
转换函数 cast 或 convert 将表达式类型转换成另一个数据类型,如果转换失败,将导致整个事务失败.SQL Server 2012 新增两个转换函数:try_cast 和 try_conver ...
- SSIS Design6:利用数据流
数据流利用内存来缓冲数据,并在内存中处理数据转换,由于内存的访问速度是非常快的,所以SSIS数据流转换性能是非常高效的.SSIS Engine将数据分批加载到内存中,当Data Flow将一批新的数据 ...
- 【Win 10应用开发】SplitView控件
SplitView控件用于呈现分隔视图,简单地说,就是把一个视图分割为两部分,Content属性所表示的为主要视图,而Pane属性设置的视图则可以隐藏,可以折叠和展开. 估计文字是不太容易介绍这个控件 ...
- OpenNURBS to OpenCASCADE
OpenNURBS to OpenCASCADE eryar@163.com Abstract. The OpenNURBS initiative provides CAD/CAM/CAE and c ...
- 苹果系统安装虚拟机 Mac如何安装虚拟机教程
1.前言 大家在用 Mac 系统的时候,可能有时难免还是要用到 Windows 系统.在 Mac 上使用 Windows 系统有二种方法.一种是在 Mac上安装双系统,适合要在机器上处理一些大型 ...
- Util应用程序框架公共操作类(八):Lambda表达式公共操作类(二)
前面介绍了查询的基础扩展,下面准备给大家介绍一些有用的查询封装手法,比如对日期范围查询,数值范围查询的封装等,为了支持这些功能,需要增强公共操作类. Lambda表达式公共操作类,我在前面已经简单介绍 ...
- 窥探Swift之数组与字典
说到数组和字典,只要是编过程的小伙伴并不陌生.在Swift中的数组与字典也有着一些让人眼前一亮的特性,今天的博客就来窥探一下Swift中的Array和Dictionary.还是沿袭之前的风格,在介绍S ...

