Docker容器中开始.NETCore之路

一、引言

  开始写就首博客前,已经尝练习了好勤Docker环境安装,.Net
Core环境安装了,在此替腾讯谈做一个放大,假如我们怀念上学、练手.net core
或是Docker却苦于没有支付环境,服务器也不思进,那么我们好使腾讯云提供的开发者实验,每个实验型每天足免费用同一蹩脚,时常45分钟,学习技术就因看几篇稿子、几本书是一点一滴不够的,”实践着会生真知“。

腾讯云开发者实验连接地址

 

老二、环境介绍

  于操演平台及的环境是CentOS7.3版
或许你见面说自家不懂Linux怎么处置,没干,我也是小白,学点基本命令暂时能因此起来就是实行了。毕竟我们无是专程以Linux下为开发的。(Linux下专业人士见谅哈)。

  Docker容器,如果说Docker容器还未晓呀概念以来,我推荐先暂停,先修下Docker的基本概念,弄清楚Docker是啊,总比更看更繁杂好.

  dotnet镜像(也堪是aspnetcore镜像就二者的涉嫌自将稍后解释).

  OK,开始着手!

 

其三、启动实验,安装Docker

  亚洲必赢bwin696.com 1

  我进去的搭建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服务

  亚洲必赢bwin696.com 2

  亚洲必赢bwin696.com 3

  安装Docker环境时索要拭目以待一到个别分钟……..安装了!

  接下去我们要用Docker服务开展启动

  亚洲必赢bwin696.com 4

  到此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镜像

 

  亚洲必赢bwin696.com 5

   这种措施供给了俺们.net
core的凡事模板,编译工具,RunTime等等,一应俱全。

  我们可以经过docker命令查看我们曾有所的镜像,注意 及时亟需在Linux主机下查看,别跑至容器中失矣

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

 

  亚洲必赢bwin696.com 6

   当前下令下我们得以视dotnet镜像已让我们拉取下来了。OK

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

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

 

   亚洲必赢bwin696.com 7

  看root后面变化了从未有过,这证明我们都跻身了一个容器,Docker当新建一个容器后,会吃这容器分配一个id,也尽管是咱们所见的那么错字符串了。

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

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

  亚洲必赢bwin696.com 8

  我们可以通过ls命令看到眼前容器被的有文件夹信息,MyFirstDocker.Web项目现已创造好了

  亚洲必赢bwin696.com 9

  在MyFirstDocker文件夹内,有广大咱耳熟能详的东西

   亚洲必赢bwin696.com 10

  接下,通过命令启动项目

  dotnet run //启动项目

  亚洲必赢bwin696.com 11

   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'

  亚洲必赢bwin696.com 12

  接下开始安装.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

   亚洲必赢bwin696.com 13

  通过一直开行,也是足以直接运行起来的,但是一定是不推荐的呀,毕竟Docker这么好用 
哈哈

  亚洲必赢bwin696.com 14

  接下去吃Linux主机上的文本可以共享文件及Docker容器中,这样一来我们得以直接在Docker中动用Linux主机文件,然后运行起来,当起文件改动,只需要更新Linux主机上之公文即可。这里见面遇上一个题目,就是鲜明曾经为此了共享目录的指令,但是Docker容器中连不曾那些文件,这是由selinux的故,我的解决方案就是于
-v加上一个–privileged=true,当然是方案为是恃度娘得知的。

  当前Docker容器中都发矣共享目录下的文本,可能会见要dotnet
restore然后得以就此dotnet run进行启动

   亚洲必赢bwin696.com 15

 

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

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

 

  亚洲必赢bwin696.com 16

  查看时已局部镜像,成功安装了aspnetcore镜像

  亚洲必赢bwin696.com 17

  同样与前的操作一样,我们根据该镜像新建一个器皿

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

  同新建一个用到,但是会发觉这个应用不能够打响,提示我们没有SDK

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

  亚洲必赢bwin696.com 18

   

  以此地我如果讲下dotnet镜像与aspnetcore镜像是啊关联:

   在dockerhub官网中有着dotnet和aspnetcore的镜像,dotnet可以当做是集大成者,包含了.netcore控制台aspnetcore的有,而aspnetcore是因dotnet镜像吧底蕴,在aspnetcore中单包含了RunTime和构建当前项目也镜像的家伙,这为不怕代表一旦我们要直动用aspnetcore为镜像,我们的项目是一旦既编译好了之,才好一直下这镜像。

  而当您利用dotnet镜像经常,包含了编译工具,Runtime,一切的总体,这吗激素dotnet镜像比aspnetcore镜像那个这么多之案由了。

  亚洲必赢bwin696.com 19

   可以利用方式同样末段以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 .

 

   如果我们用采用此镜像,我们可一直当创立容器时指定这个镜像,生成之后的环境与您自包之镜像是一律的

   最后谢谢博友的稿子参考,半只不解的时候正好看到就篇稿子,很顺畅的化解了一个问题。

  @圣杰 http://www.cnblogs.com/sheng-jie/p/8107877.html

 

  新春佳节关键,在斯祝愿大家  新年开门红
大吉大利。

 

2018-1-1,望技术有成后能回来看见自己的脚步

 

相关文章