Docker部署.NET6项目

news2024/12/27 3:15:54

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++学习之路(十五)C++ 用Qt5实现一个工具箱(增加16进制颜色码转换和屏幕颜色提取功能)- 示例代码拆分讲解

上篇文章,我们用 Qt5 实现了在小工具箱中添加了《Base64图片编码预览功能》功能。为了继续丰富我们的工具箱,今天我们就再增加两个平时经常用到的功能吧,就是「 16进制颜色码转RGB文本 」和 「屏幕颜色提取」功能。下面我们就来看看如何来规划…

Postman可以卸载了!这款IDEA插件太好用了!

Postman是大家最常用的API调试工具,那么有没有一种方法可以不用手动写入接口到Postman,即可进行接口调试操作?今天给大家推荐一款IDEA插件:Apipost Helper,写完代码就可以调试接口并一键生成接口文档!而且还…

C++笔试题之回文数的判断

“回文”是指正读反读都能读通的句子,它是古今中外都有的一种修辞方式和文字游戏,如“我为人人,人人为我”等。在数学中也有这样一类数字有这样的特征,成为回文数(palindrome number)。 设n是一任意自然数…

vue3中使用antv-X6实现关系图

先看效果图: 1、安装 npm installantv/x6 --save 这里使用的X6中自定义节点的方式实现的,项目目录如下,hooks里面存放一些函数和变量 nodes里面是自定义节点的页面,最外围的index.vue就是主渲染页面 2、testSh/index.vue 注意&…

计算机视觉GPT时刻!UC伯克利三巨头祭出首个纯CV大模型,推理惊现AGI火花

计算机视觉的GPT时刻,来了! 最近,来自UC伯克利的计算机视觉「三巨头」联手推出了第一个无自然语言的纯视觉大模型(Large Vision Models),并且第一次证明了纯视觉模型本身也是可扩展的(scalabil…

YOLOv8创新魔改教程(三)如何添加注意力机制注意力机制的用法与思考

注意力机制的用法与思考 好多同学问我加了CA注意力机制,CBAM注意力机制,都没有涨点,然后就在不停地换不同的注意力机制,其实并不是这样的。今天和大家讨论一下注意力机制的用法与思考。 (一)添加位置 大…

异常追踪与 JIRA 实现双向联动

前言 当应用程序或系统出现异常时,通常需要及时处理以保证系统的正常运行。通过异常追踪与 JIRA 双向联动,可以让企业内部相关人员快速了解、分析问题故障发生的原因、追溯并记录故障的处理过程,有效提高人员的沟通效率,极大降低…

使用 SVN 新建本地仓库和提交

在写代码的时候经常要看自己修改了什么或者临时备份一下,发现 SVN 比 Git 更好用,下面是使用 TortoiseSVN 在本地新建仓库和关联仓库的方法。 1. 新建文件夹,在文件夹里面右键选择 TortoiseSVN -> Create repository here 。 2. 选择建立…

C++红黑树封装set和map(很详细)

前言 在前面,我们学习了红黑树。(没学过红黑树直接看会很吃力)set和map的底层就是红黑树,现在我们要用这棵树来封装STL里面的容器:set和map。 下面是之前讲过的红黑树,他只是普通的“Key”模型,适合封装set…

排序:直接插入排序希尔排序

目录 排序: 概念: 直接插入排序: 代码的实现: 代码解析: 总结: 希尔排序: 代码实现: 预排序: 代码优化: gap 的 本质 : 直接…

千梦网创:设计一个100%回本赚钱的培训模式

互联网上搞培训,牌坊立的快,倒的也快。 你会的东西你教了才能赚钱,你想赚钱你就要教。 你只要教了,立马就有人模仿,立马就有人收费比你更低。 所以,你不会变,你没有核心的东西,就…

日本IT行业发展前景怎么样呢?

由于日本劳动力短缺,招聘外国IT工程师的公司越来越多,目前,日本IT行业有约28,000多名外国工程师,占所有日本IT工程师的3%。随着大量海外人才涌入日本,预计这一数字还会进一步增长,所以有不少人想要转行做赴…

RHCE作业

目录 1、搭建一个通过网址https://www.openlab.com/money访问的缴费网站,网站内容为money 2、配置DNS的正向解析 1、搭建一个通过网址https://www.openlab.com/money访问的缴费网站,网站内容为money 首先查看自己是不是有nginx的包没有的话装一个 首…

ModStartCMS v7.7.0 集成内容区块,文件选择顺序

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。 系统完全开源,基于 Apache 2.0 开源协议,免费且不限制商业使用。 功能特性 丰富的模块市…

智能优化算法应用:基于鼠群算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于鼠群算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于鼠群算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.鼠群算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

mapbox系列:常见功能使用总结

前言 最近在写一个大屏的时候使用mapbox,将开发过程进行总结如下: 功能1:mapbox logo显示与隐藏 使用mapbox时地图上会有mapbox的logo,如下: 设置地图全局样式设置 :deep(.mapboxgl-ctrl) {display: none !import…

第十五届蓝桥杯模拟赛B组(第二期)C++

前言: 第一次做蓝桥模拟赛的博客记录,可能有很多不足的地方,现在将第十五届蓝桥杯模拟赛B组(第二期)的题目与代码与大家进行分享,我是用C做的,有好几道算法题当时自己做的也是一脸懵&#xff0c…

R语言学习

Part1阶段1:入门基础 1安装R和RStudio: 下载并安装R:https://cran.r-project.org/ 下载并安装RStudio:https://www.rstudio.com/products/rstudio/download/ 2Hello World: 学习如何在R中输出"Hello, World!"…

苹果OS X系统介绍(Mac OS --> Mac OS X --> OS X --> macOS)

文章目录 OS X系统介绍历史与版本架构内核与低级系统图形,媒体和用户界面应用程序和服务 特性用户友好强大的命令行安全性集成与互操作性 总结 OS X系统介绍 OS X是由苹果公司为Macintosh计算机系列设计的基于UNIX的操作系统。其界面友好,易于使用&…

论文阅读:Distributed Initialization for VIRO with Position-Unknown UWB Network

前言 Distributed Initialization for Visual-Inertial-Ranging Odometry with Position-Unknown UWB Network这篇论文是发表在ICRA 2023上的一篇文章,本文提出了一种基于位置未知UWB网络的一致性视觉惯性紧耦合优化测距算法( DC-VIRO )的分布式初始化方法。 对于…