腾讯云开发者实验链接地址html
在练习平台上的环境是CentOS7.3版 或许你会说我不懂Linux怎么办,不要紧,我也是小白,学点基本命令暂时能用起来就好了。毕竟咱们不是专门在Linux下搞开发的。(Linux下专业人士见谅哈)。java
Docker容器,若是说Docker容器还不知道什么概念的话,我推荐先暂停,先学习下Docker的基本概念,弄清楚Docker是什么,总比越看越糊涂好.linux
dotnet镜像(也能够是aspnetcore镜像这二者的关系我将稍后解释).git
OK,开始动手!web
我进入的搭建Docker环境,固然也能够从其余实验中开始着手。从搭建Docker环境中进入咱们能够看到要求的步骤,方便咱们快速安装,仅此而已。 docker
一、先来安装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服务进行启动mvc
到这里Docker环境的安装就已经结束了。固然咱们还须要配置Docker,开始配置DockerHub:app
echo "OPTIONS='--registry-mirror=https://mirror.ccs.tencentyun.com'" >> /etc/sysconfig/docker systemctl daemon-reload //从新载入 systemd,扫描新的或有变更的单元 systemctl restart docker.service //重启docker服务
3、安装.Net Core环境asp.net
接下来咱们将有两种方式来安装咱们的.net core环境
方式一:在Docker容器中获取dotnet镜像
docker pull microsoft/dotnet //安装.net core镜像
这种方式提供给了咱们.net core的整套模板,编译工具,RunTime等等,包罗万象。咱们能够经过docker命令查看咱们已经拥有的镜像,注意 这须要在Linux主机下查看,别跑到容器中去了
docker images // 查看当前已有的docker镜像文件
当前命令下咱们能够看到dotnet镜像已经被咱们拉取下来了。继续,咱们开始新建并运行一个以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 //启动项目
大功告成,项目启动,能够经过同时按住Ctrl+q+p退出容器,该命令保持容器中网站运行,而后使用curl -k http://localhost:5000访问网站
查看当前主机上已有的容器实例
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能够看做是集大成者,包含了.net core控制台aspnetcore的全部,而aspnetcore是以dotnet镜像为基础,在aspnetcore中只包含了RunTime和构建当前项目为镜像的工具,这也就意味着若是咱们要直接使用aspnetcore为镜像,咱们的项目是要已经编译好了的,才能够直接使用这个镜像。而当你使用dotnet镜像时,包含了编译工具,Runtime,一切的一切,这也就是dotnet镜像比aspnetcore镜像大这么多的缘由了。
能够利用方式一最后在Linux下编译好的项目,一样用共享目录的方式共享到有aspnetcore镜像的Docker容器中,这样咱们就能够直接跑起来了。因为时间关系没有尝试,下次会尝试一下。这样作的好处是在开发环境中编译好的项目咱们能够直接拿来用,Docker容器中只须要运行时环境就能够了。
4、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,望技术有成后能回来看见本身的脚步