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

.NET Core 微服务架构-Docker部署

700次阅读
没有评论

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

本文主要介绍通过 Docker 来部署通过.NET Core 开发的微服务架构,部署的微服务主要包括统一网关(使用 Ocelot 开发)、统一认证(IdentityServer4)、应用服务(ASP.NET Core WebAPI)。

本文不针对微服务进行说明,后续会针对我对微服务的理解在做记录。

一、Docker 原理¶

对 Docker 最简单并且带有一定错误的认知就是“Docker 是一种性能非常好的虚拟机”。

但是这是有一定错误的说法。Docker 相比于传统虚拟机的技术来说先进了不少,具体表现在 Docker 不是在宿主机上虚拟出一套硬件后再虚拟出一个操作系统,而是让 Docker 容器里面的进程直接运行在宿主机上(Docker 会做文件、网络等的隔离),这样一来 Docker 会“体积更轻、跑的更快、同宿主机下可创建的个数更多”。

  • Docker 中有三个核心概念:Image、Container、Repository。

  • Image:大家对 镜像 的概念不会陌生。但和 windows 的那种 iso 镜像相比,Docker 中的镜像是分层的,可复用的,而非简单的一堆文件迭在一起(类似于一个压缩包的源码和一个 git 仓库的区别)。

  • Container:容器的存在离不开镜像的支持,他是镜像运行时的一个载体(类似于实例和类的关系)。依托 Docker 的虚拟化技术,给容器创建了独立的端口、进程、文件等“空间”,Container 就是一个与宿机隔离“容器”。容器可宿主机之间可以进行 port、volumes、network 等的通信。

Repository:Docker 的仓库和 git 的仓库比较相似,拥有仓库名、tag。在本地构建完镜像之后,即可通过仓库进行镜像的分发。

常用的 Docker hub 有:

https://hub.docker.com/(docker 官方)

https://cr.console.aliyun.com/

二、Windows 系统中 Docker 的安装¶

1、启用 Hyper-V¶

打开控制面板 – 程序和功能 – 启用或关闭 Windows 功能,勾选 Hyper-V,然后点击确定即可,如图:

.NET Core 微服务架构 -Docker 部署

2、下载并安装 Docker¶

下载地址:https://hub.docker.com/editions/community/docker-ce-desktop-windows,需要注册一个 Docker 账号才能下载

下载完成后直接安装

通过命令查看 Docker 版本号:

.NET Core 微服务架构 -Docker 部署

3、修改镜像地址¶

由于 Docker 官方镜像会非常慢,我是修改的阿里云的镜像

.NET Core 微服务架构 -Docker 部署

4、测试¶

万能的 HelloWorld,通过 PowerShell 运行 Docker run hello-world

.NET Core 微服务架构 -Docker 部署

docker ps -a // 查看运行的容器

.NET Core 微服务架构 -Docker 部署

以上就是整个 Windows 中安装 Docker 环境的过程

三、Ubuntu 中安装 Docker 环境¶

我是在 AWS 申请了一台免费的服务器,是用的 ubuntu 系统。如果需要申请 AWS 的服务器,可以通过 AWS 官网注册账号进行申请,需要填写信用卡账号,https://portal.aws.amazon.com/billing/signup#/start

本文 ubuntu 中安装 Docker 是直接参考官方教程:https://docs.docker.com/install/linux/docker-ce/ubuntu/

安装的时候最好切换到 root 账号进行安装

ubuntu 的远程是通过 putty,具体怎么用可以百度

四、发布并部署服务¶

1、创建 Dockerfile、发布应用程序¶

.NET Core 微服务架构 -Docker 部署

这是我的工程目录,构建镜像是通过 Dockerfile 来构建的。

VS2017 是支持自动构建 Dockerfile 文件,工程右键 - 添加 -Docker 支持

下面是我的 Dockerfile 的内容:

FROM microsoft/aspnetcore:2.1 
// 基础镜像,这里是.net core 的基础运行环境
WORKDIR /publish // 创建工程目录
COPY . /publish // 将当前目录拷贝到镜像中,注意 COPY . 后面又空格
EXPOSE 80 // 容器对外暴露 80 端口
ENTRYPOINT ["dotnet", "ZY.Gateway.dll"] // 启动容器内的服务
// 这里相当于构建镜像的命令,是逐行执行

需要设置 Dockerfile 的编译为输出到发布目录 .NET Core 微服务架构 -Docker 部署

 

以上都设置好以后,通过 VS 发布程序

.NET Core 微服务架构 -Docker 部署

发布成功后,在工程目录的 bin/release 目录下找到我们的发布后的文件

.NET Core 微服务架构 -Docker 部署

其他服务的发布跟以上发布类似

2、上传到 ubuntu 中¶

通过 WinScp 工具进行上传,将三个服务都上传到服务器,WinScp 怎么用,可以百度一下

.NET Core 微服务架构 -Docker 部署

3、构建镜像¶

 

docker build -t apigateway .   // 构建网关镜像 
docker build -t identityserver 
-f /home/ubuntu/dockerapp/identityserver/publish/Dockerfile . 
// 构建认证服务镜像
docker build -t testserver 
-f /home/ubuntu/dockerapp/testserver/publish/Dockerfile .
 // 构建测试服务镜像
-t // 镜像名称
-f //dockerfile 文件路径

.NET Core 微服务架构 -Docker 部署

 

docker images // 查看镜像

.NET Core 微服务架构 -Docker 部署

4、运行容器¶

镜像已经在前面构建完成,这一步会根据构建的镜像来运行容器,将我们的服务跑起来

docker run -d -p 5000:80 
--name apigateway_container apigateway
docker run -d -p 6000:80 
--name identityserver_container identityserver
docker run -d -p 7000:80 
--name testserver_container testserver
// 分别将网关服务,认证服务,测试服务容器跑起来
//-d 保持后台进程运行 -p 端口映射,{主机端口}:{容器端口}

通过命令查看容器运行情况 docker ps -a .NET Core 微服务架构 -Docker 部署

在配置网关服务的时候会涉及到容器与容器之间的网络访问,Docker 在安装的时候会创建一个 172.17.0.1 的 IP 网关,可以通过 172.17.0.1 来做端口的转发。

通过命令可以查看 docker0 的网关

.NET Core 微服务架构 -Docker 部署

Api 网关的路由转发配置

.NET Core 微服务架构 -Docker 部署

5、调用服务¶

通过 Postman 来调用通过 Docker 运行的服务,通过 API 网关访问认证服务获取 Token

.NET Core 微服务架构 -Docker 部署

总结¶

整个 Docker 的安装,服务的发布,镜像的打包,容器的运行就全部完成。

整个过程不是一气呵成的,踩了不少坑,在踩坑的过程中也学到和理解了很多东西。

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

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7997807
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛 NAS-7:手把手教你免费内网穿透 -Cloudflare tunnel 前言 大家好,我是星...
从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统

从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统

从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统 大家好,我是星哥。公司的项目文档存了一堆 ...
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...
手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...
亚马逊云崩完,微软云崩!当全球第二大云“摔了一跤”:Azure 宕机背后的配置风险与警示

亚马逊云崩完,微软云崩!当全球第二大云“摔了一跤”:Azure 宕机背后的配置风险与警示

亚马逊云崩完,微软云崩!当全球第二大云“摔了一跤”:Azure 宕机背后的配置风险与警示 首先来回顾一下 10...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...
安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装 Black 群晖 DSM7.2 系统安装教程(在 Vmware 虚拟机中、实体机均可)! 前言 大家好,...
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...
手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...
你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你 为什么要用宝塔跑分? 宝塔跑分其实就是对 CPU、内存、磁盘、IO 做...