Docker部署.NET6项目

Docker的三大核心概念

1、docker仓库(repository)

docker仓库(repository)类似于代码库,是docker集中存放镜像的场所。实际上,注册服务器是存放仓库的地方,其上往往存放着很多仓库。每个仓库集中存放某一类镜像,往往包括多个镜像文件,通过不同的标签(tag)来进行区分。

根据存储的镜像公开分享与否,docker仓库可以分为公开仓库(Public)和私有仓库(Private)两种形式。目前,最大的公开仓库是Docker Hub,存放了数量庞大的镜像供用户下载,国内的公开镜像包括Docker Pool,可以提供稳定的国内访问,与GitHub类似。

2、docker镜像(Image)

docker镜像类似于虚拟机镜像,可以将其理解为一个只读模板。除了提供容器运行时所需的程序、库、资源、配置等文件外,docker镜像还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)

我们把项目打包才成一个镜像,那么这个镜像中就有了我们项目所依赖的所有环境和资源

3、 docker容器(container)

.Net项目部署到Docker

1、生成构建Image镜像文件

Vs中右键项目->添加->Docker 支持->目标OS选择 Linux   在项目中会生成个Dockerfile文件

这个Dockerfile文件就是用来构建你项目的Image镜像的,它是一个创建当前项目镜像的所有命令的文本文件

2、将你的项目存放到Linux中

我们可以用MobaXterm 或者其他文件工具将我们的项目存放到Linux中,我们就在Linux系统的root文件下创建了一个叫ZKHK的文件用于存放我们的项目代码,然后我又单独的将Dockerfile文件单独的放在了与项目文件夹同级的ZKHK文件夹下。

3、构建项目镜像

#docker build:表示要构建镜像
#myimagename :是我们自己要构建的镜像的名称,随便我们自己取名(主要名称小写)
#dockerfile:是我们要构建的镜像需要的文件,文件名叫Dockerfile


docker build -t net6projecttest -f Dockerfile .

构建镜像的时候如果提示:

[Warning] IPv4 forwarding is disabled. Networking will not work.


 则需要开启 Linux 操作系统的 IP 转发功能

临时开启: 如果你只是希望临时开启 IP 转发功能,可以使用以下命令:

sudo sysctl -w net.ipv4.ip_forward=1

永久开启: 如果你希望永久开启 IP 转发功能,需要编辑配置文件,使其在系统重启时仍然生效

1、编辑 /etc/sysctl.conf 文件

sudo nano /etc/sysctl.conf

2、在文件末尾添加以下行,表示开启 IP 转发功能

net.ipv4.ip_forward=1

3、保存并关闭文件。Ctrl+o,可以修改文件名,Ctrl+x 保存并退出当前文件

4、使修改生效

sudo sysctl -p

现在,IPv4转发已经启用了。重新启动网络服务,你将不再收到“IPv4 forwarding is disabled”的警告消息,并且网络连接将正常工作。

使用 firewalld 或 iptables 设置转发规则: 除了开启 IP 转发功能,如果你需要进行网络地址转发,你还需要设置转发规则。你可以使用 firewalld 或 iptables 来进行设置,具体步骤因操作场景和需求而异

1、使用 firewalld

sudo firewall-cmd --add-masquerade --permanent sudo firewall-cmd --reload

2、使用 iptables

sudo iptables -t nat -A POSTROUTING -o 出口网卡 -j MASQUERADE

3、修改完成后,按下 Ctrl + O,这将会显示一个提示,询问你是否要保存已经编辑的内容。按下 Enter 键,即可确认保存 

4、确认保存后,你可以修改文件名(如果需要),然后按下 Enter 键

5、最后,按下 Ctrl + X 退出 nano 编辑器

4、根据镜像创建并运行容器

Docker容器启动之前,如果不进行端口映射,在容器外部是无法通过网络来访问容器内的网络应用和服务。因为容器中常常会运行一些网络应用和服务,如果想在容器外部通过网络来访问容器内的网络应用和服务,就需要对该容器进行端口映射,可以通过docker run命令中的-P-p选项来进行端口映射

Docker容器本身是一个独立的、隔离的环境,它自己拥有独立的IP地址。当我们创建并运行一个容器时,它内部的应用程序无法直接被主机上的其他应用访问。因此,我们需要进行端口映射,将容器内部的端口与主机的端口进行映射,这样就能够通过主机上的端口访问容器内部的应用程序了

举例:假设我们虚拟机的IP是 192.168.43.10,

我们可以通过HTTP地址(即常说的“网址”)或IP加“: 80”来访问网站,因为浏览网页服务默认的端口号都是80

我们的项目运行在Docker容器中,而容器外部是无法通过网络来访问容器的内容部网络应用和服务的,所以我们就需要将Docker容器的某个端口(如:8083)映射到主机的80端口,这样我们就可以在外部通过网址+“:8083” 来访问容器的里应用和服务了。

92.168.43.10:8083 就相当于访问主机的80端口了。

#8083:80:将容器内部的 8083端口映射到主机上的 80端口

#docker8083:容器的名称,名称随便自己取

#net6projecttest :镜像名称

docker run -itd -p 8083:80 --name docker8083 net6projecttest 

docker run -itd -p 8084:80 --name docker8084 net6projecttest 

上面就根据镜像创建了两个两个容器。一个是

92.168.43.10:8083

92.168.43.10:8084

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/222607.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

强强联合!航天科技AIRIOT助力航天电工打造智慧工厂

随着工业4.0时代的到来,电线电缆制造行业正在进入全新的数字化时代,企业需要构建新型智能工厂以助力传统产业智能制造升级。通过搭建智慧系统并结合解决方案,实现从底层产线、车间到工厂资产的全面感知与洞察,以及数据的全量采集与…

Python自动化测试PO模型封装过程详解

在自动化中, Selenium 自动化测试中有一个名字经常被提及 PageObject( 思想与面向对象的特征相 同 ) ,通常 PO 模型可以大大提高测试用例的维护效率 优点:可重用,业务和对象分离,代码结构清晰,方便代码维护 核心要素 …

win11安装(未完待续)

学习补丁 test.bat 运行后需要重启 slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX slmgr /skms kms.03k.org slmgr /ato 文件扩展名 主题 性能设置 开始按钮靠左 任务栏对齐方式-靠左 必备软件 f.lux redshift 360管家 驱动精灵 edge c*lash(v2*ray不支持w…

Unity打包EXE自定义(拖拽)窗口大小

代码 using System.Collections; using System.Collections.Generic; using UnityEngine; using System; using System.Runtime.InteropServices; public class MyWindow : MonoBehaviour {[DllImport("user32.dll")]private static extern IntPtr GetActiveWindow(…

机器学习实验六:聚类

系列文章目录 机器学习实验一:线性回归机器学习实验二:决策树模型机器学习实验三:支持向量机模型机器学习实验四:贝叶斯分类器机器学习实验五:集成学习机器学习实验六:聚类 文章目录 系列文章目录一、实验…

1.3角色设计精要

一、角色设计流程 二、确定角色关键词 OW角色小美 关键词: 中国防守英雄冰与雪聪明的邻家大姐姐探索与冒险南极科考航天科技 OW角色猎空 关键词: 英国敏捷飞行员进攻英雄年轻动感活泼 三、收集素材和灵感 概念设计 由分析用户需求到生成概念产品一系…

CompletableFuture异步执行

CompletableFuture异步执行 概念 Java 8引入了一个强大的类:CompletableFuture,它在java.util.concurrent包中。CompletableFuture是Future的增强版本,主要用于实现异步编程。 首先,我们要理解什么是Future。Future是Java5引入的一个接口,代表一个异步计算的结果。你可…

反序列化漏洞详解(二)

目录 pop链前置知识,魔术方法触发规则 pop构造链解释(开始烧脑了) 字符串逃逸基础 字符减少 字符串逃逸基础 字符增加 实例获取flag 字符串增多逃逸 字符串减少逃逸 延续反序列化漏洞(一)的内容 pop链前置知识,魔术方法触…

Linux之进程(二)

目录 一、进程优先级 1、基本概念 2、Linux中的优先级 1、PRI和NI 2、通过top命令更改进程NI值 3、四个特性 二、进程切换 一、进程优先级 1、基本概念 什么是优先级?优先级:进程获取cpu资源分配的先后顺序,就是指进程的优先权。优先…

JVM 虚拟机(一)导学与字节码文件组成

一、实战 JVM - 基础篇 初识 JVM 什么是 JVM? Java Virtual Machine(JVM),中文翻译为 Java 虚拟机 JVM 的功能 解释和运行:对字节码文件中的指令进行实施的解释成机器码,让计算机执行。自动为对象和方法…

Python版本与opencv版本的对应关系

python版本要和opencv版本相对应,否则安装的时候会报错。 可以到Links for opencv-python上面查看python版本和opencv版本的对应关系,如图,红框内是python版本,绿框内是opencv版本。 查看自己的python版本后,使用下面…

时序数据库TDengine安装及c#连接读写数据

物联网数据采集,需写入大量数据,这时就用到时序数据库来存储和快速读取 我个人使用感觉国产的开源项目TDengine,比InfluxDB操作方便很多,容易上手,支持使用SqlSugar进行数据操作,跟操作mysql数据库一样的体…

分部积分法

1.形式:u对v求积分uv-v对u求积分,一前一后,一般把三角函数,反三角函数,In,e的x次方提到d里面 2. 3. 4. 5. 6. 7. 当结果中出现要求的不要慌,不是1直接求,是1重新计算

DTCC2023大会-基于eBPF观测数据库-附所有PPT下载链接

DTCC2023大会-基于eBPF观测数据库-附所有PPT下载链接 8月16日—18日,第14届中国数据库技术大会(DTCC-2023)在北京国际会议中心举行。聚好看在大会上首次发布基于eBPF观测数据库性能的产品DBdoctor,受到了业界广泛的关注。近期几位业内同仁过来要大会的PPT&#xff…

三维模型的顶层合并构建的优势方面浅析

三维模型的顶层合并构建的优势方面浅析 倾斜摄影超大场景的三维模型的顶层合并具有许多优势,本文将对其进行浅析。 一、全面的信息获取 倾斜摄影超大场景的三维模型的顶层合并能够从不同视角和角度获取全面的信息。通过倾斜摄影技术,可以在一个扫描过程…

shell脚本生成随机双色球号码

[rootcentos7 ~]#cat lottery.sh #!/bin/bash #定义零长度数组 arr() length${#arr[]} while [ "${length}" -lt 6 ]do#取1到33的随机数s$[$RANDOM%331]#判断随机数是否在数组中,不在就赋值给数组if [[ ! "${arr[]}" ~ "${s}" ]]then…

Ubuntu防止休眠和挂起(笔记)

目录 1 动机2 禁用休眠3 解除休眠 1 动机 我要将 饿啊人制作成 noah-mp 的区域运行强迫,但是跑的慢,一晚上两天。后来发现是因为电脑自动 supend 了。Ubuntu 在电源那里最多只能设置 2 小时的防止休眠,2小时候又自动休眠,严重影响…

数据资产入表在即,企业如何把握机遇,进行数据资产管理?

数据作为新时代重要的生产要素之一,数据资产化的相关工作正在提速。自今年10月1日起,中国资产评估协会制定的《数据资产评估指导意见》正式施行。同时,《企业数据资源相关会计处理暂行规定》近期转为正式稿,也将于明年1月1日起施行…

7 种查询策略教你用好 Graph RAG 探索知识图谱

近来 NebulaGraph 社区在 LLM Graph 和 Graph RAG 领域进行了深入的探索和分享。在 LlamaIndex 和 LangChain 中,NebulaGraph 引入了一系列知识图谱和图存储工具,支持编排、图谱与大模型间的交互。之前,NebulaGraph 布道师古思为作为这项工作…

阻碍“元宇宙”游戏行业发展的最大瓶颈是什么?

很显然,我们现在还没看到真正的“元宇宙”产品,在3-5年内也不太可能看到这样的产品。按照米哈游CEO蔡浩宇的说法,2030年希望建成一个“上亿人愿意生活在其中的虚拟世界”,那也是八年以后的事情了。 原因很简单:技术不成…