先决条件

64位,内核3.10以上,查看当前的内核版本,打开一个终端使用uname -r显示您的内核版本

 
 

 
 

 
 

安装

sudo yum update

 
 

sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'

[dockerrepo]

name=Docker Repository

baseurl=https://yum.dockerproject.org/repo/main/centos/7/

enabled=1

gpgcheck=1

gpgkey=https://yum.dockerproject.org/gpg

EOF

 
 

 
 

 
 

安装docker

sudo yum install docker-engine

 
 

 
 

启动docker

sudo service docker start

 
 

验证docker已正常安装

 
 

安装.net core 镜像

https://hub.docker.com/r/microsoft/dotnet/

 
 

 
 

新建文件Dockerfile ,并修改内容

 
 

 
 

文件内容

#基于`mcrosoft/dotnet:1.0.0-core` 来构建我们的镜像

FROM microsoft/dotnet:1.0.0-core

 
 

#拷贝项目publish文件夹中的所有文件到 docker容器中的publish文件夹中

COPY . /publish

#设置工作目录为 `/publish` 文件夹,即容器启动默认的文件夹

 
 

WORKDIR /publish

 
 

#设置Docker容器对外暴露60000端口

EXPOSE 60000

 
 

#使用`dotnet MyApp.TestCore.dll`来运行应用程序

 
 

CMD ["dotnet", "MyApp.TestCore.dll"]

 
 

 
 

 
 

 
 

构建镜像

docker build -t my-dotnet-app .

 
 

注意最后有个.

如果创建失败,需要vpn才可以,这一步我试了几次总有超时,就找了个vpn再次构建就成功了

 
 

 
 

运行

docker run --name my-dotnet-app -d -p 60000:60000 my-dotnet-app

 
 

测试站点

 
 

失败了,报curl: (56) Recv failure: Connection reset by peer

 
 

参考解决办法:http://stackoverflow.com/questions/27806631/docker-rails-app-fails-to-be-served-curl-56-recv-failure-connection-reset

 
 

修改程序如下:添加UseConfiguration

var configuration = new ConfigurationBuilder()

.AddCommandLine(args)

.Build();

 
 

var host = new WebHostBuilder()

.UseKestrel()

.UseContentRoot(Directory.GetCurrentDirectory())

.UseConfiguration(configuration)

.UseIISIntegration()

.UseStartup<Startup>()

.Build();

 
 

host.Run();

 
 

发布程序

修改Dockerfile 文件如下

 
 

 
 

FROM microsoft/dotnet:1.0.0-core

 
 

COPY . /publish

 
 

WORKDIR /publish

 
 

EXPOSE 5003

 
 

CMD ["dotnet", "MyApp.TestCore.dll","--server.urls", "http://*:5003"]

 
 

重新构建镜像

 
 

sudo docker build -t dotnetapp .

 
 

 
 

运行并查看

sudo docker run --name dotnetapp -d -p 5003:5003 dotnetapp

 
 

 
 

测试站点

 
 

 
 

api返回数据,成功

防火墙开放端口

$ sudo firewall-cmd --zone=public --add-port=5003/tcp --permanent
$ sudo firewall-cmd --reload

 
 

 
 

说下遇到的问题:

1.构建镜像时由于网络原因,试了好几次都没有成功,需要找个vpn

2.curl: (56) Recv failure: Connection reset by peer 这个错误,.net core默认创建的站点绑定的是localhost这个需要修改站点绑定方式,通过添加

UseConfiguration或UseUrls方式修改默认站点的绑定

 
 

 
 

 
 

 
 

 
 

 
 

Centos 7 ASP.NET Core 1.0 Docker部署的更多相关文章

  1. 基于VS2017的Docker Support体检ASP.NET Core站点的Docker部署

    最近在学习如何用 Docker 部署生产环境中的 ASP.NET Core 站点,作为一个 Docer 新手,从何处下手更容易入门呢?一开始就手写 Docker 配置文件(Docfile, docke ...

  2. ASP.NET Core 2.0发布/部署到Ubuntu服务器并配置Nginx反向代理

    原文链接https://www.linuxidc.com/Linux/2017-12/149557.htm ASP.NET Core 2.0 怎么发布到Ubuntu服务器?又如何在服务器上配置使用AS ...

  3. ASP.NET Core:ASP.NET Core程序使用Docker部署

    一.前言 这篇文章介绍如何将一个ASP.NET Core应用程序在Docker中进行部署.开发工具使用的是Visual Studio 2019和VS Code. 二.使用Docker部署 我们选择新建 ...

  4. 使用Linux、Nginx和Github Actions托管部署ASP.NET Core 6.0应用

    使用Linux.Nginx和Github Actions托管部署ASP.NET Core 6.0应用 前言 本文主要参考微软这篇文档而来 Host ASP.NET Core on Linux with ...

  5. Centos7 & Docker & Jenkins & ASP.NET Core 2.0 自动化发布和部署

    写在前面 Docker一直很火热,一直想把原本的Jenkins自动部署工具搬到Docker上面,无奈今年一直忙于各种事情,迟迟未实施这个事情,正好迎来了dotnet core 2.0 的正式发布,升级 ...

  6. ASP.NET Core 3.0 : 二十八. 在Docker中的部署以及docker-compose的使用

    本文简要说一下ASP.NET Core 在Docker中部署以及docker-compose的使用  (ASP.NET Core 系列目录). 系统环境为CentOS 8 . 打个广告,求职中.. 一 ...

  7. docker 安装jenkins 发布 asp.net core 2.0

    安装Docker 其实安装Docker的过程,大家可以到Docker官网找到自己相对应的安装文档进行安装,Docker区分CE和EE的两个版本,具体这两个版本有什么区别,大家自行查阅相关资料,这里不再 ...

  8. 记一次Docker中部署Asp.Net Core 3.0的踩坑过程

    最近公司打算重构目前直销报单系统到微信小程序中,目前的系统只能在PC上面使用,这两年也搞过App端,但是由于人员流动和公司架构调整最后都不了了之,只留下一堆写了一半的接口.以前的接口依然是使用Asp. ...

  9. 将 ASP.NET Core 1.0 应用作为 docker 镜像发布 (Linux版)

    var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...

随机推荐

  1. MD5加密操作

    MD5加密操作:MD5加密算法原理MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),它的作用是让大容量信息在用数字签名软件签署私人密匙前被"压缩" ...

  2. 成为 Web 开发大师你必须知道的 7 件事情

    曾经是这样的,懂点编码,并可以偶尔耍点酷,那么你就会被认为是一个Web开发大师.但是现在,情况再也不是这样的了.Web开发已经朝着主流方向发展,开发人员数量显著增加.这意味着,如果你想成为这个领域的大 ...

  3. jQuery 浮动标签插件,帮助你提升表单用户体验

    浮动标签模式(Float Label Pattern)是最新流行的一种表单输入域的内容提示方式,当用户在输入框输入内容的时候,原先占位符的内容向上移动,显示在输入的内容的上面.这里推荐的这款 jQue ...

  4. 最简单的轮播广告(原生JS)

    改变每个图片的opacity属性:来自学友刘斌 素材图片: <!DOCTYPE html> <html lang="en"> <head> &l ...

  5. 拖放 js

    之前被小伙伴问自己能不能写一个简单的原生的 我稍微犹豫了下  这次重新学习下拖拽的过程  分享下  参考 JavaScript高级程序设计 必要的准备 自定义事件(实现事件模型)  简单来说事件模型就 ...

  6. 玩转 HTML5 Placeholder

    Placeholder(占位符) 是 HTML5 新增的一个 HTML 属性,用来对可输入字段的期望值提供提示信息,目前已经得到主流浏览器的广泛支持,使用方式非常简单: <input id=&q ...

  7. Sharepoint学习笔记—习题系列--70-576习题解析 -(Q40-Q44)

    Question 40 You have a social networking site in SharePoint 2010 that allows users to post content f ...

  8. JavaScript学习09 函数本质及Function对象深入探索

    JavaScript学习09 函数本质及Function对象深入探索 在JavaScript中,函数function就是对象. JS中没有方法重载 在JavaScript中,没有方法(函数)重载的概念 ...

  9. 如何让光标处于EditText的末尾

    经测试发现,如果EditText预先有内容,光标自然会在文字的末尾 . 但是如果预先内容为空,然后设置好内容,这种情况下光标自然会在文字的开头,所以这种情况下可以这样做让光标位于末尾: editTex ...

  10. 【转】Android NFC学习笔记

    一:NFC的tag分发系统 如果想让android设备感应到NFC标签,你要保证两点 1:屏幕没有锁住 2:NFC功能已经在设置中打开 当系统检测到一个NFC标签的时候,他会自动去寻找最合适的acti ...