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

目录
  • 前言
  • 环境准备
  • .NET Core项目准备
    • 1.首先我们先创建一个空的ASP.NET Core Web应用
    • 2.我们可以先在本地将项目构建成镜像看看效果
    • 3.接下来我们将镜像run起来,构造出一个容器:
  • Linux环境配置:
    • 1.配置yum
      • 更新yum包
      • 安装yum-utils 用来管理yum源
      • 查看资源库中有没有安装过的docker rpm包
    • 2.安装docker
    • 3.启动docker
    • 4.安装.NetCore SDK 6.0
      • 安装包配置
      • 执行安装
      • 验证安装环境
      • 调整Dockerfile文件属性
      • 项目打包,拷贝至Linux服务器上
      • 运行Dockerfile
      • 使用外网访问
  • Docker部署.NetCore 项目
  • 结尾

前言

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

环境准备

VS2022
CentOS 7
Docker Desktop
.NetCore 6.0
Xshell 7

.NET Core项目准备

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

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

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

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

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

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

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

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

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

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

docker images

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

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

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

查看正在运行的镜像:

docker ps

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

到这里我们在window上已经可以成功访问我们到项目了
接下来我们先对我们Linux服务器的环境进行配置,方便后续部署项目

Linux环境配置:

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

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

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

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

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

我当时安装的时候踩了一些坑
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

4.安装.NetCore SDK 6.0

安装包配置

sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm

执行安装

sudo yum install dotnet-sdk-6.0

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

安装完成

验证安装环境

dotnet --info

OK 环境配置完成!

Docker部署.NetCore 项目

调整Dockerfile文件属性

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

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

接下来我们将项目打包,然后拷贝到linux服务器编译发布
在linux上创建一个文件夹 NetCoreProgram

然后将我们打包好的项目拷贝至文件夹中
使用linux命令rz(会弹出一个上传窗口)

--

运行Dockerfile

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

unzip -d NetCoreWeb NetCoreWeb.zip

接下来按照我们上述在window下将项目编译成镜像的操作,现在在linux环境下在执行一遍:
编译成镜像(注意要在对应文件目录下执行命令):

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

编译完成,查看镜像:

docker images

将镜像run起来生成容器:

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

查看容器是否生成成功:

docker ps

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

curl localhost:8805

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

使用外网访问

使用服务器地址加开放的端口号:
本机(windows)直接访问服务器地址 http://xxx.xxx.xxx.xx:8805/

OK ,访问成功
这里使用外网访问可能会遇到一些问题:
1.需要注意服务器的防火墙以及开放的端口
2.由于我这里是腾讯云的服务器,在云上它还有另外的一套安全组策略,也就是云上的防火墙,这里也需要开放端口
到此,我们的项目就部署完成啦!

结尾

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

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

(0)

相关推荐

  • 使用docker在linux环境中部署springboot包的教程

    因为springboot是内嵌了tomcat服务器的,所以打成jar包后,是可以直接运行的. 首先我们看一下,在windows环境下的打包部署 1. 进行install打包 2. 检查,在target目录中是否存在了项目jar包 3.如果已经存在了项目jar包,就可以直接运行了(前面说了,springboot包是可以直接运行的) 4.在dos命令框中使用java -jar指令 java -jar springboot-nriat-common-demo-0.0.1-SNAPSHOT.jar 启动

  • Linux下使用docker搭建Openvpn代理的方法

    说明 openvpn方式与pptpd方式对比(个人感觉): 复杂度:openvpn>pptpd 安全性:openvpn>pptpd 稳定性:openvpn>pptpd 1.安装 1.下载 docker pull kylemanna/openvpn 2.全局变量(方便设置) OVPN_DATA="/root/ovpn-data" // 下面的全局变量换成你的服务器的外网ip IP="xxx.xxx.xxx.xxx" 3.创建文件目录 mkdir ${

  • Linux环境下安装docker环境(亲测无坑)

    目录 安装前提条件 第一步:检查并清除系统残余项,并安装Docker依赖环境 第二步:Docker依赖环境搭建好之后,安装并启动Docker 安装前提条件 Docker 要求 CentOS 系统的内核版本高于 3.10 ,首先验证你的服务器是否支持Docker! 通过 uname -r 命令查看当前的内核版本 [root@iZbp18425116ezmjdmbdgeZ ~]# uname -r 4.18.0-193.14.2.el8_2.x86_64 可以看到我的服务器是4.18.0,是支持Do

  • docker在Linux环境下的安装教程

    1.安装环境 Docker支持以下的CentOS版本 CentOS 6.5 (64-bit) 或更高的版本 Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker [root@tenghao510 ~]# uname -r 3.10.0-957.21.3.el7.x86_64 3.用 yum 安装 Docker:  yum -y install docker 最后出现Complete即安装成功 4.启动Docker

  • Linux服务器搭建nvidia-docker环境过程详解

    docker相当于一个容器,其可以根据你所需要的运行环境构建相应的运行环境,此时各个环境之间彼此隔离,就不会存在在需要跑一个新的代码的时候破坏原来跑的代码所需要的环境,各个环境之间彼此隔离开,好像一个个容器将其隔离开一样 由于docker只针对在CPU上面跑的情况,对于需要在GPU上面运行的服务器,其提供了一个nvidia-docker sudo apt-get install -y nvidia-docker2 sudo pkill -SIGHUP docker 对于怎么在服务器子账户上面搭建

  • CentOS 7下设置Docker代理(Linux下Systemd服务的环境变量配置)

    Docker守护程序使用HTTP_PROXY,HTTPS_PROXY以及NO_PROXY环境变量在其启动环境来配置HTTP或HTTPS代理的行为.无法使用daemon.json文件配置这些环境变量. 此示例将覆盖默认docker.service文件. 在设置中,需要在Docker systemd服务文件中添加此配置 如果使用HTTP代理服务器时,将为docker服务创建systemd插件目录: mkdir -p /etc/systemd/system/docker.service.d 创建一个名

  • linux环境部署及docker安装redis的方法

    安装步骤 1. 安装Redis 通过docker search redis和docker pull redis下载redis镜像 2. 新建挂载配置文件夹 新建data和conf两个文件夹,位置随意. mkdir -p /root/docker/redis/data mkdir -p /root/docker/redis/conf 注:因为 redis 默认配置你会发现只能够本地连接,不能进行远程访问,使用 Redis Desktop Manager连接都会报错,因此需要手动挂载 redis 配

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

    目录 前言 环境准备 .NET Core项目准备 1.首先我们先创建一个空的ASP.NET Core Web应用 2.我们可以先在本地将项目构建成镜像看看效果 3.接下来我们将镜像run起来,构造出一个容器: Linux环境配置: 1.配置yum 更新yum包 安装yum-utils 用来管理yum源 查看资源库中有没有安装过的docker rpm包 2.安装docker 3.启动docker 4.安装.NetCore SDK 6.0 安装包配置 执行安装 验证安装环境 调整Dockerfile

  • 使用docker部署hadoop集群的详细教程

    最近要在公司里搭建一个hadoop测试集群,于是采用docker来快速部署hadoop集群. 0. 写在前面 网上也已经有很多教程了,但是其中都有不少坑,在此记录一下自己安装的过程. 目标:使用docker搭建一个一主两从三台机器的hadoop2.7.7版本的集群 准备: 首先要有一台内存8G以上的centos7机器,我用的是阿里云主机. 其次将jdk和hadoop包上传到服务器中. 我安装的是hadoop2.7.7.包给大家准备好了,链接:https://pan.baidu.com/s/15n

  • 搭建基于Docker的PHP开发环境的详细教程

    现在很多开发者都使用Vagrant来管理他们的虚拟机开发环境,Vagrant确实很酷, 不过也有不少缺点(最主要的是它占用太多的资源).在容器技术.Docker和更多类Docker技术出现后,解决这个问题就变得简单了. 免责声明 由于boot2docker的工作方式,本文所述的方法在你的环境中可能无法正常运行.如果需要在非Linux环境下共享文件夹到Docker容器,还需要注意更多额外的细节.后续我会写篇文章专门来介绍实际遇到的问题. 怎样才算是好的开发环境 首先,我们得知道什么才是好的开发环境

  • IDEA连接远程服务器Docker部署Spring Boot项目的详细教程

    开始前的准备工作 拥有一台云服务器,我的是腾讯云服务器(CentOS7) 腾讯云服务器安装Docker,我的版本是Docker 19.03.9,关于安装和配置镜像加速器可以查阅我的另一篇博文:https://www.jb51.net/article/188048.htm,其中有详细的讲解 Windows上有安装IDEA 正式开始工作 第一步:配置Docker,开启远程访问(注:仅供学习参考,实际生产环境万万不可,会产生很大的安全风险),默认端口是2375,也可以修改为其他端口 1.修改/lib/

  • kali安装docker及搭建漏洞环境的详细教程

    目录 前言: docker的简介 安装docker 1. 在kail环境下搭建docker,kali版本要在3.10以上,使用命令查看kali内核 2. 添加添加Docker官方的GPG密钥 3.,然后更新源 4. 然后导入证书 5.安装docker 6.检查安装是否成功 docker的简单使用 1. 启动docker 2. 查看镜像 3.搭建漏洞环境 前言: 言归正传,下面开始学习了.本文仅供学习参考,严禁用于一切违法行为,否则后果自负. docker的简介 Docker 是一个开源的应用容器

  • VMware中安装CentOS7(设置静态IP地址)并通过docker容器安装mySql数据库(超详细教程)

    一位读大二的学弟问我怎么安装配置这些,我简单的整了一个教程,这里记录一下,并分享给需要的朋 安装过程学习使用足够,实际工作中有些繁琐的配置略过了! 打开VM虚拟机,菜单栏[文件]-->选择[新建虚拟机],选择"o自定义(高级)"-->[下一步] 默认一直点[下一步]到选择安装盘的位置,选择自己已经下载好的官方DVD镜像文件(不要整别的镜像,避免走不必要 的坑) [下一步]设置虚拟机名称(取一个合适的名称,设置合适的路径) 处理器设置默认,安装好虚拟centos后可以根据情况

  • 部署维护docker环境的详细教程

    1,安装环境说明 系统环境:centos6.6 服务应用了:  haproxy  confd   etcd   docker 主机名               ip   服务角色 dockerha-152    192.168.36.152    haproxy confd dockerEtcd-153     192.168.36.153      etcd dockermain-154    192.168.36.154    docker 2,安装依懒包,关闭冲突的服务 官方文档要求Li

  • Docker 运行多个Springboot的详细教程

    docker 运行多个Springboot 第一个:端口映射 第二个:指定内存大小 第三个:读取.写入物理文件 第四个:日志文件 第五个:多个容器内部网络访问 第六个:遇到的问题 第一个:端口映射 Nginx使用的是转发,那么这个是最简单的. [hn@iZbp1gp1t778obaz5m8vk8Z guides]$ docker run -d -p 8093:8093 guides-collect 将物理的端口映射为虚拟的端口即可,这个很简单 第二个:指定内存大小 -m,--memory 内存限

  • 使用Docker+jenkins+python3环境搭建超详细教程

    前言: 自动化写好后需要在服务器上每日定时运行遇到,这样的一个问题,Jenkins容器是在docker中安装的 ,然后从git上拉取代码 发现代码在jenkins容器的目录当中,运行的时候提示没有安装python环境还第三方库. 解决方法有3种: 第一种:启动jenkins容器时 将容器的目录挂载到宿主机目录上去执行(方法不能实现)Pass 第二种:在jenkins上创建本地节点,将代码拉取到本地 然后去运行本地项目(在本机上使用比较方便,但是局限性比较小) 第三种:重新封装jenkins镜像,

  • IDEA 通过docker插件发布springboot项目的详细教程

    一.编写Dockerfile文件 (1)右键项目名,新建一个文本文件,把名字改成Dockerfile,不用后缀.放在项目根目录下. (2)填写Dockerfile内容 FROM openjdk:8 VOLUME /tmp ADD target/*.jar app.jar ENTRYPOINT ["java","-jar","/app.jar"] FROM openjdk:8  // 表示基础环境是jdk8 ADD target/*.jar app

随机推荐