小知识:.NET 6 从0到1使用Docker部署至Linux环境超详细教程

前言

作为一名.Net菜鸟开发者,平时对Linux接触的并不多,项目部署这一块都是运维小哥顶着,但是作为混迹在云原生项目组的人咱也不能什么都不知道,该掌握的知识还是要懂的,所以借着这次机会,梳理一下项目部署这块的知识点。如果在阅读的过程中发现有什么不合理的地方,还请多多指教!

环境准备

VS2022

CentOS 7

Docker Desktop

.NetCore 6.0

Xshell 7

.NET Core项目准备

1.首先我们创建一个空的ASP.NET Core Web应用

%小知识:.NET 6 从0到1使用Docker部署至Linux环境超详细教程-猿站网-插图

项目启用Docker支持,然后会生成一个Dockerfile文件

%小知识:.NET 6 从0到1使用Docker部署至Linux环境超详细教程-1猿站网-插图

我们来解析以下Dockerfile文件里面的内容与流程

%小知识:.NET 6 从0到1使用Docker部署至Linux环境超详细教程-2猿站网-插图

对多阶段构建感兴趣的同学可以移步官网 使用多阶段构建

2.我们可以先在本地将项目构建成镜像看看效果

打开PowerShell 进入项目解决方案目录路径

%小知识:.NET 6 从0到1使用Docker部署至Linux环境超详细教程-3猿站网-插图

%小知识:.NET 6 从0到1使用Docker部署至Linux环境超详细教程-4猿站网-插图

接下来我们将项目打包镜像

docker image build -f ./NetCoreWeb/Dockerfile -t aspnetcore:latest .

%小知识:.NET 6 从0到1使用Docker部署至Linux环境超详细教程-5猿站网-插图

注:这里使用 docker build -t aspnetcorewin .命令也可以,只不过有一些坑,遇到问题了可以在评论区交流

打包完成,我们可以使用Docker命令来查看镜像:

docker images

%小知识:.NET 6 从0到1使用Docker部署至Linux环境超详细教程-6猿站网-插图

我们也可以使用Docker Desktop客户端查看镜像

%小知识:.NET 6 从0到1使用Docker部署至Linux环境超详细教程-7猿站网-插图

3.接下来我们将镜像run起来,构造出一个容器

docker run –name=aspnetcorewin -p 8801:80 -d aspnetcorewin
–name :指定容器名称。 –p :指定容器端口。 –d :指定容器后台运行

%小知识:.NET 6 从0到1使用Docker部署至Linux环境超详细教程-8猿站网-插图

查看正在运行的镜像:

docker ps

%小知识:.NET 6 从0到1使用Docker部署至Linux环境超详细教程-9猿站网-插图

%小知识:.NET 6 从0到1使用Docker部署至Linux环境超详细教程-10猿站网-插图

我们直接本地访问我们映射的端口localhost:8801

%小知识:.NET 6 从0到1使用Docker部署至Linux环境超详细教程-11猿站网-插图

到这里我们在window上已经可以成功访问我们到项目了

接下来我们先对我们Linux服务器的环境进行配置,方便后续部署项目

Linux环境配置:

使用XShell或其他工具连接上我们的Linux服务器

%小知识:.NET 6 从0到1使用Docker部署至Linux环境超详细教程-12猿站网-插图

1.配置yum

更新yum包
sudo yum update
安装yum-utils 用来管理yum源
sudo yum install -y yum-utils
查看资源库中有没有安装过的docker rpm包
yum list installed | grep docker

如果之前安装过可以不用安装,如果想重新安装也可以

执行卸载老版本docker及其相关依赖即可
sudo yum remove docker docker-common container-selinux docker-selinux docker-engine

2.安装docker

yum -y install docker-ce

%小知识:.NET 6 从0到1使用Docker部署至Linux环境超详细教程-13猿站网-插图

如果出现 No package docker-ce available 错误,这里我们只需要设置稳定的仓库添加yum源即可。

sudo yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo

%小知识:.NET 6 从0到1使用Docker部署至Linux环境超详细教程-14猿站网-插图

然后再执行安装Docker命令进行安装就可以了。

%小知识:.NET 6 从0到1使用Docker部署至Linux环境超详细教程-15猿站网-插图

%小知识:.NET 6 从0到1使用Docker部署至Linux环境超详细教程-16猿站网-插图

我当时安装的时候踩了一些坑

1.“sqlite3.OperationalError: database is locked” 这里可能是我之前中断过yum的更新导致yum进程被锁了,最后把yum更新进程杀掉就可以了。

2.安装过程中一直停留在running transaction

3.启动docker

启动docker

sudo systemctl start docker

设置docker开机自启动

sudo systemctl enable docker

查看docker是否运行

systemctl status docker

%小知识:.NET 6 从0到1使用Docker部署至Linux环境超详细教程-17猿站网-插图

4.安装.NetCore SDK 6.0

安装包配置
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm

%小知识:.NET 6 从0到1使用Docker部署至Linux环境超详细教程-18猿站网-插图

执行安装
sudo yum install dotnet-sdk-6.0

%小知识:.NET 6 从0到1使用Docker部署至Linux环境超详细教程-19猿站网-插图

安装可能会花费些时间,请耐心等待哦!

安装完成

%小知识:.NET 6 从0到1使用Docker部署至Linux环境超详细教程-20猿站网-插图

验证安装环境
dotnet –info

%小知识:.NET 6 从0到1使用Docker部署至Linux环境超详细教程-21猿站网-插图

OK 环境配置完成!

Docker部署.NetCore 项目

调整Dockerfile文件属性

我们先将Dockerfile文件属性复制到输出目录的方式调整为** 如果较新则复制**,方便我们部署

%小知识:.NET 6 从0到1使用Docker部署至Linux环境超详细教程-22猿站网-插图

项目打包,拷贝至Linux服务器上

接下来我们将项目打包,然后拷贝到linux服务器编译发布

在linux上创建一个文件夹 NetCoreProgram

%小知识:.NET 6 从0到1使用Docker部署至Linux环境超详细教程-23猿站网-插图

然后将我们打包好的项目拷贝至文件夹

使用linux命令rz(会弹出一个上传窗口)

%小知识:.NET 6 从0到1使用Docker部署至Linux环境超详细教程-24猿站网-插图

%小知识:.NET 6 从0到1使用Docker部署至Linux环境超详细教程-25猿站网-插图

运行Dockerfile

进入解压完成的文件夹内查看文件:

unzip -d NetCoreWeb NetCoreWeb.zip

%小知识:.NET 6 从0到1使用Docker部署至Linux环境超详细教程-26猿站网-插图

接下来按照我们上述在window下将项目编译成镜像的操作,现在在linux环境下在执行一遍:

编译成镜像(注意要在对应文件目录下执行命令):
docker image build -f ./NetCoreWeb/Dockerfile -t aspnetcore:latest .

%小知识:.NET 6 从0到1使用Docker部署至Linux环境超详细教程-27猿站网-插图

%小知识:.NET 6 从0到1使用Docker部署至Linux环境超详细教程-28猿站网-插图

编译完成,查看镜像:

docker images

%小知识:.NET 6 从0到1使用Docker部署至Linux环境超详细教程-29猿站网-插图

将镜像run起来生成容器:

docker run –name=aspnetcore -p 8805:80 -d aspnetcore

%小知识:.NET 6 从0到1使用Docker部署至Linux环境超详细教程-30猿站网-插图

查看容器是否生成成功:

docker ps

%小知识:.NET 6 从0到1使用Docker部署至Linux环境超详细教程-31猿站网-插图

接下来我们使用curl命令来访问程序

curl localhost:8805

%小知识:.NET 6 从0到1使用Docker部署至Linux环境超详细教程-32猿站网-插图

OK,访问正常,到此我们的项目就部署完成啦!

使用外网访问

使用服务器地址加开放的端口号

本机(windows)直接访问服务器地址 http://xxx.xxx.xxx.xx:8805/

%小知识:.NET 6 从0到1使用Docker部署至Linux环境超详细教程-33猿站网-插图

OK ,访问成功

这里使用外网访问可能会遇到一些问题:

1.需要注意服务器的防火墙以及开放的端口

2.由于我这里是腾讯云的服务器,在云上它还有另外的一套安全组策略,也就是云上的防火墙,这里也需要开放端口

到此,我们的项目就部署完成啦!

结尾

当然,这里只是用了最简单的项目用来部署,实际情况中已经上了CICD与k8s了,但是如果你连最基础的都玩不转的话,遇到更复杂的情况只能寸步难行哈。

到此这篇关于.NET 6 从0到1使用Docker部署至Linux环境的文章就介绍到这了,更多相关docker部署至Linux环境内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文地址:https://www.cnblogs.com/Mamba8-24/p/16300975.html

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:Docker容器实战之镜像与容器的工作原理

2023-3-6 17:14:17

建站知识

小知识:使用非root用户安装及启动docker的问题(rootless模式运行)

2023-3-6 17:24:50

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索