Docker容器中开始.NETCore之路

转载 2018年01月02日 00:00:00

一、引言

  开始写这篇博客前,已经尝试练习过好多次Docker环境安装,.Net Core环境安装了,在这里替腾讯云做一个推广,假如我们想学习、练手.net core 或是Docker却苦于没有开发环境,服务器也不想买,那么我们可以使用腾讯云提供的开发者实验,每个实验项目每天可以免费使用一次,时常45分钟,学习技术单靠看几篇文章、几本书是完全不够的,”实践方能出真知“。来腾讯云开发者实验室 学习.NET Core 2.0

二、环境介绍

  在练习平台上的环境是CentOS7.3版 或许你会说我不懂Linux怎么办,没关系,我也是小白,学点基本命令暂时能用起来就行了。毕竟我们不是专门在Linux下搞开发的。(Linux下专业人士见谅哈)。

  Docker容器,如果说Docker容器还不知道什么概念的话,我推荐先暂停,先学习下Docker的基本概念,弄清楚Docker是什么,总比越看越糊涂好.

  dotnet镜像(也可以是aspnetcore镜像这两者的关系我将稍后解释).

  OK,开始动手!

 

三、启动实验,安装Docker

  

  我进入的搭建Docker环境,当然也可以从其他实验中开始着手。从搭建Docker环境中进入我们可以看到要求的步骤,方便我们快速安装,仅此而已。 

  1、先来安装Docker环境

  yum install docker-io -y //CentOS已经将Docker软件包放在了Extras软件源中,直接利用即可  docker -v //查看docker的版本 version  systemctl start docker.service //开启Docker服务  systemctl enable docker.service //开机启动Docker服务

  

  

  安装Docker环境时需要等待一到两分钟........安装完毕!

  接下来我们需要将Docker服务进行启动

  

  到这里Docker环境的安装就已经结束了。

 

   当然我们还需要配置Docker,开始配置DockerHub:

  echo "OPTIONS='--registry-mirror=https://mirror.ccs.tencentyun.com'" >> /etc/sysconfig/docker
  systemctl daemon-reload //重新载入 systemd,扫描新的或有变动的单元  systemctl restart docker.service //重启docker服务

 

 

四、安装.NETCore环境

  接下来我们将有两种方式来安装我们的.net core环境

  方式一:在Docker容器中获取dotnet镜像

  docker pull microsoft/dotnet //安装.net core镜像

 

  

   这种方式提供给了我们.net core的整套模板,编译工具,RunTime等等,一应俱全。

  我们可以通过docker命令查看我们已经拥有的镜像,注意 这需要在Linux主机下查看,别跑到容器中去了

  docker images // 查看当前已有的docker镜像文件

 

  

   当前命令下我们可以看到dotnet镜像已经被我们拉取下来了。OK

  继续,我们开始新建并运行一个以dotnet镜像的容器

  docker run -it microsoft/dotnet //启动一个dotnet镜像

 

   

  看到root后面变化了没,这说明我们已经进入了一个容器,Docker当新建一个容器后,会给这个容器分配一个id,也就是我们所看见的那串字符串了。

   继续,通过命令新建一个web应用

  dotnet new mvc -n MyFirstDocker.Web //创建项目名为MyFirstDocker.Web的ASP.NET Core MVC项目

  

  我们可以通过ls命令看到当前容器中的所有文件夹信息,MyFirstDocker.Web项目已经创建好了

  

  在MyFirstDocker文件夹内,有很多我们熟悉的东西

   

  接下来,通过命令启动项目

  dotnet run //启动项目

  

   OK,大功告成,项目启动,由于实验环境没得浏览器,我们只能看看 哈哈 貌似是有一种方式可以看到页面 但我还没学会 见谅哈

 

   通过命令exit退出当前容器,查看当前主机上已有的容器实例

  docker ps -a // 查看当前的已存在的容器实例 (不考虑状态)

  在这里我们开始要考虑长远计划了,假如我需要将新的文件加入进来,我可以采取什么方式,在容器中安装一个git,pull新文件,或许可以,但是如果说这台主机上有十个容器,都运行着服务,莫非我还得十个容器全部安装git,基于这个考虑,可以尝试用下这种操作了。

  我在Linux主机中安装.NET Core SDK

  首先开始配置安装包的来源

sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc

  sudo sh -c 'echo -e "[packages-microsoft-com-prod]

  name=packages-microsoft-com-prod 

  baseurl= https://packages.microsoft.com/yumrepos/microsoft-rhel7.3-prod

  enabled=1

  gpgcheck=1

  gpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/dotnetdev.repo'

 

  接下来开始安装.net-sdk,版本2.0.3,这个过程耗时比较长,需要耐心等待

  sudo yum update
  sudo yum -y install libunwind libicu
  sudo yum install dotnet-sdk-2.1.3

   好了,开始接下来的操作了

  cd /home 
  mkdir aspnetcoreapp
  cd aspnetcoreapp
  dotnet new web
  dotnet restore
  dotnet run

   

  通过直接启动,也是可以直接运行起来的,但是肯定是不推荐的啦,毕竟Docker这么好用  哈哈

  

  接下来让Linux主机上的文件可以共享文件到Docker容器中,这样一来我们可以直接在Docker中使用Linux主机文件,然后运行起来,当有文件改动,只需要更新Linux主机上的文件即可。这里会遇到一个问题,就是明明已经用了共享目录的命令,但是Docker容器中并没有那些文件,这是由于selinux的原因,我的解决方案就是在 -v加上一个--privileged=true,当然这个方案也是靠度娘得知的。

  当前Docker容器中已经有了共享目录下的文件,可能会需要dotnet restore然后可以用dotnet run进行启动

   

 

  方式二:在Docker容器中获取aspnetcore镜像

  docker pull microsoft/aspnetcore //安装asp.net core镜像

 

  

  查看当前已经有的镜像,成功安装了aspnetcore镜像

  

  同样和前面的操作一样,我们根据该镜像新建一个容器

  docker run -it microsoft/aspnetcore //运行一个以aspnetcore为镜像的容器 

  同样新建一个应用,但是会发现这个应用不能成功,提示我们没有SDK

  dotnet new mvc -n HelloDocker.Web //创建项目名为HelloDocker.Web的ASP.NET Core MVC项目

  

   

  在这里我要解释下dotnet镜像aspnetcore镜像什么关系:

   在dockerhub官网中有着dotnet和aspnetcore的镜像,dotnet可以看作是集大成者,包含了.netcore控制台aspnetcore的所有,而aspnetcore是以dotnet镜像为基础,在aspnetcore中只包含了RunTime和构建当前项目为镜像的工具,这也就意味着如果我们要直接使用aspnetcore为镜像,我们的项目是要已经编译好了的,才可以直接使用这个镜像。

  而当你使用dotnet镜像时,包含了编译工具,Runtime,一切的一切,这也激素dotnet镜像比aspnetcore镜像大这么多的原因了。

  

   可以利用方式一最后在Linux下编译好的项目,同样用共享目录的方式共享到有aspnetcore镜像的Docker容器中,这样我们就可以直接跑起来了。由于时间关系没有尝试,下次会尝试一下。

  这样做的好处是在开发环境中编译好的项目我们可以直接拿来用,Docker容器中只需要运行时环境就可以了。

 

 五、DockerFile文件的作用

  dockerFile可是好东西,好比如说拿着武功秘籍,一招一式照着做。

  一般是在项目中建好一个dockerfile文件,然后在其中写上我们的要求

FROM microsoft/dotnet:latest

  WORKDIR /app

  COPY . /app

  RUN dotnet restore

  EXPOSE 5000

  ENV ASPNETCORE_URLS http://*:5000

  ENTRYPOINT ["dotnet","run"]

通过命令将dockerfile文件运行,将整个项目打包成镜像,我们可以使用docker images可以看到这个生成的新镜像

  docker build -t mydockerimage .

    如果我们需要使用这个镜像,我们可以直接在创建容器时指定这个镜像,生成之后的环境和你打包的镜像是一样的

   最后感谢博友的文章参考,半只不解的时候正好看到这篇文章,很顺利的解决了一个问题。

相关文章

原文地址:https://www.cnblogs.com/CKExp/p/8159269.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com


Docker下用.NET Core写C#程序

2017 微软一个比较大的动作就是.Net core2.0了,微软出的这个框架野心很大:它可以让用户在几乎所有的PC终端用C#编写自己的应用程序。在win/Linux/mac三大主流操作系统通吃之后,...
  • xiangxianghehe
  • xiangxianghehe
  • 2017年08月11日 23:33
  • 1343

Docker & ASP.NET Core 2.0 微服务跨平台实践

本篇博文的目的:在 Mac OS 中使用 VS Code 开发 ASP.NET Core 2.0 应用程序,然后在 Ubuntu 服务器配置 Docker 环境,并使用 Docker 运行 Consu...
  • sD7O95O
  • sD7O95O
  • 2017年11月16日 00:00
  • 565

.NETCore之路从Docker容器中开始

一、引言 开始写这篇文章前,已经尝试练习过好多次Docker环境安装,.Net Core环境安装了。 二、环境介绍 在练习平台上的环境是CentOS7.3版 或许你会说我不懂Linux怎么办,没...
  • longdan3105
  • longdan3105
  • 2018年01月03日 15:00
  • 45

.NET Core+MySql+Nginx 容器化部署

1. 引言上两节我们通过简单的demo学习了docker的基本操作。这一节我们来一个进阶学习,完成ASP.NET Core + MySql + Nginx的容器化部署。本文是基于CentOS 7.4环...
  • sD7O95O
  • sD7O95O
  • 2018年01月11日 00:00
  • 73

ASP.NET Core 网站在Docker中运行

Docker作为新一代的虚拟化方式,未来肯定会得到广泛的应用,传统虚拟机的部署方式要保证开发环境、测试环境、UAT环境、生产环境的依赖一致性,需要大量的运维人力,使用Docker我们可以实现一次部署,...
  • sD7O95O
  • sD7O95O
  • 2017年04月14日 07:44
  • 60

.Net大局观(2).NET Core 2.0 特性介绍和使用指南

.NET Core 2.0发布日期:2017年8月14日 前言 这一篇会比较长,介绍了.NET Core 2.0新特性、工具支持及系统生态,现状及未来计划,可以作为一门技术的概述来读,也可以作为学...
  • zhangjunqis
  • zhangjunqis
  • 2017年08月18日 14:38
  • 3633

Docker容器中常见的十种误区

Docker是一个开源的应用容器引擎,在虚拟的容器环境之上增加一个应用部署引擎。它是一个轻量级但十分强大的关于虚拟化技术的开源容器,在容器中还整合了构建并容器化应用的工作流程。目前大家已经开始认同并接...
  • s1070
  • s1070
  • 2016年08月03日 12:08
  • 673

docker学习之路

在复习数学准备考试之余,能够在晚上花点时间看一看docker,学习一下也算是一种娱乐和放松了吧。 这篇blog主要就是准备记录一些自己在学习docker路上的心得,即算是一个总结,也算是给自己以后回...
  • l627757940
  • l627757940
  • 2016年11月17日 01:22
  • 188

Real-Time Web Application Development With ASP.NET Core, SignalR, Docker, epub

  • 2017年12月16日 15:36
  • 11.53MB
  • 下载

docker-netcore-httpserver学习笔记

准备环境:docker-netcore-firstapp学习笔记最终效果 启动服务# dotnet run Hosting environment: Production Content root...
  • wxm6614
  • wxm6614
  • 2017年10月05日 15:58
  • 156
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Docker容器中开始.NETCore之路
举报原因:
原因补充:

(最多只允许输入30个字)