阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

.NET Core微服务之ASP.NET Core on Docker

167次阅读
没有评论

共计 2358 个字符,预计需要花费 6 分钟才能阅读完成。

一、Docker 极简介绍

1.1 总体介绍

.NET Core 微服务之 ASP.NET Core on Docker

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个 轻量级、可移植的容器 中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

简而言之 > 容器是一个打包了应用服务的环境,它是一个 轻量级的虚拟机,每一个容器由一组特定的应用和必要的依赖库组成。

Docker 和传统虚拟化之间最大的区别在于:容器是在操作系统层面上实现虚拟化,即直接复用本地主机的操作系统;而传统虚拟化则是在硬件层面实现,如 VMware vShpere, Xen 及 Citrix 等。

.NET Core 微服务之 ASP.NET Core on Docker

.NET Core 微服务之 ASP.NET Core on Docker

1.2 Docker 结构

Docker 使用客户端 - 服务器 (C/S) 架构模式,使用远程 API 来管理和创建 Docker 容器。

Docker 容器通过 Docker 镜像来创建。

容器与镜像的关系类似于 面向对象编程中的对象与类

Docker 的架构如下图所示,Client 通过接口与 Server 进程通信实现容器的构建,运行和发布。Client 和 Server 可以运行在同一台集群,也可以通过跨主机实现远程通信。

.NET Core 微服务之 ASP.NET Core on Docker

二、Docker 的安装

(1)准备一台 Linux 主机,这里以 CentOS 7.2 为例。当然,你也可以使用 Windows,不过你得确保是 Windows 10 pro 版本及以上,且安装了 Hyper- V 等一系列的相关软件。

(2)安装 docker

# yum install docker

.NET Core 微服务之 ASP.NET Core on Docker

(3)启动 docker 服务

# systemctl start docker.service

.NET Core 微服务之 ASP.NET Core on Docker

(4)配置开机启动并验证

# systemctl enable docker.service

.NET Core 微服务之 ASP.NET Core on Docker

验证:查看 docker 版本信息 

# docker version

.NET Core 微服务之 ASP.NET Core on Docker

(5)配置 docker 加速器 => 原因你懂得,不设置慢死你,云服务器除外

# vim /etc/docker/daemon.json

{

“registry-mirrors”: [“https://d8b3zdiw.mirror.aliyuncs.com”]

}

然后重启 docker 服务

# systemctl daemon-reload

# systemctl restart docker

(6)Hello World

# docker run hello-world

.NET Core 微服务之 ASP.NET Core on Docker

三、ASP.NET Core on Docker 配置

(1)拉取 dotnet/aspnetcore 的最新镜像,这里以 aspnetcore 2.0 为例

# docker pull microsoft/aspnetcore:2.0

.NET Core 微服务之 ASP.NET Core on Docker

PS:如果要拉取最新版本(比如.net core 2.1),可以将版本号改为 aspnetcore:latest

如果你想要拉取更多 microsoft 的镜像,那么搜索一下把:# docker search microsoft

.NET Core 微服务之 ASP.NET Core on Docker

拉取了不想要的镜像,那么删除一个吧,如:# docker rmi imagesID

.NET Core 微服务之 ASP.NET Core on Docker

拉取之后,验证一下是否拉取成功了:# docker images

.NET Core 微服务之 ASP.NET Core on Docker

(2)现在我们进入 VS 中为我们的一个 ASP.NET Core WebAPI 编辑一个 Dockerfile

# 父镜像
FROM microsoft/aspnetcore:2.0

# 设置工作目录
WORKDIR /app

# 复制发布文件到/app 下
COPY . /app

# 设置端口
EXPOSE 8810

# 使用 dotnet Manulife.DNC.MSAD.NB.AgentService.dll 来运行 ASP.NET Core 项目,注意大小写
ENTRYPOINT ["dotnet", "Manulife.CD.MSAD.NB.AgentService.dll", "--server.urls", "http://*:8810"]

(3)发布这个 ASP.NET Core WebAPI,并将 Release 文件传送到 Linux 服务器中(你可以选择 xFTP 或者 WinScp 等工具)

.NET Core 微服务之 ASP.NET Core on Docker

(4)进入上图的 AgentService 目录中,开始打包 docker 镜像

# docker build -t agentservice-container:1.0 . => 不要忘记后面还有一个点.

.NET Core 微服务之 ASP.NET Core on Docker

此刻再次验证:# docker images

.NET Core 微服务之 ASP.NET Core on Docker

(5)万里长征最后一步:运行 docker

# docker run –name agentservice -d -p 8810:8810 agentservice-container:1.0

.NET Core 微服务之 ASP.NET Core on Docker

这里的两个端口号分别是宿主机和容器的映射,前一个是你在外部访问的端口号,后一个是你要映射到 docker 容器中的端口号,切记和我们在 Dockerfile 中暴露出来的端口号保持一致。

PS:这里如果 docker run 失败后再次运行会提示名称已存在,可以使用以下命令来删除容器

# docker rm -f [dockername]

如果想要 docker 容器在非正常退出后自动重启,可以加上 –restart 选项,例如下面:

# docker run –name agentservice -d -p 8810:8810 agentservice-container:1.0 –restart=always

(6)验证 docker 运行效果

方式一:在宿主机验证

.NET Core 微服务之 ASP.NET Core on Docker

方式二:在远程客户端通过浏览器访问

.NET Core 微服务之 ASP.NET Core on Docker

四、Supervisor 守护进程

.NET Core 微服务之 ASP.NET Core on Docker

此部分主要针对于在 Linux 上的 dotnet core 应用程序,保证程序在异常或者是电脑重启的时候仍然能够正常访问。

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计2358字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中