Docker容器中最先

一、引言

  开头写这篇博客前,已经尝试训练过好多次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环境的装置就曾经完结了。

 

亚洲必赢bwin696.com,   当然大家还索要配备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的漫天模板,编译工具,Run提姆e等等,一应俱全。

  大家得以由此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中只含有了Run提姆(Tim)e和构建当前项目为镜像的工具,这也就象征一旦我们要平昔利用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,望技术有成后能回来看见自己的脚步

 

相关文章