当前位置: 首页 > news >正文

Docker部署.NET10 项目

一、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、构建项目镜像

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

[Warning]IPv4forwardingisdisabled.Networkingwillnotwork.

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

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

sudosysctl-wnet.ipv4.ip_forward=1

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

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

# 1、打开/etc/sysctl.conf 文件sudonano/etc/sysctl.conf#或sudovim/etc/sysctl.conf#vim命令打开的文件 按 i 进入编辑状态# 2、在文件末尾添加以下行,表示开启 IP 转发功能net.ipv4.ip_forward=1# 编辑完毕后,按Esc退出编辑 然后按冒号(Shift+:)输入w !sudo %进行强制保存# Ctrl+o,可以修改文件名,Ctrl+x 保存并退出当前文件

2、使修改生效

sudosysctl-p

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

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

1、使用 firewalld

sudofirewall-cmd --add-masquerade--permanentsudofirewall-cmd--reload

2、使用 iptables

sudoiptables-tnat-APOSTROUTING-o出口网卡-jMASQUERADE

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 :镜像名称dockerrun-itd-p8083:80--namedocker8083 net6projecttestdockerrun-itd-p8084:80--namedocker8084 net6projecttest

上面就根据镜像创建了两个两个容器:92.168.43.10:8083和92.168.43.10:8084

http://www.jsqmd.com/news/495005/

相关文章:

  • 测试宇宙假说:我们是否生活在模拟测试中?——软件测试从业者的专业视角
  • Java常用API之String类:
  • ABB机器人仿真工作站:超便捷教学实训平台
  • Rust的std--mem--transmute:类型转换的终极武器(及危险)
  • AI检测算法不断升级:免费降AI工具如何应对新挑战
  • 使用Jsoup爬取豆瓣电影Top250(附Java代码)
  • Redis 队列学习笔记(List Queue)
  • 告别API封号焦虑:分享一个稳定的Claude Code与OpenAI Codex接入方案
  • PMIC小记
  • server-http.ts 文件分析
  • 编程语言特性比较与适用场景选择建议
  • 英伟达GTC 2026“芯片全家桶”震撼登场,微美全息构建全栈算力创新体系迎风而上
  • 用户生成内容:海量数据存储与检索的优化
  • 46页精品PPT | 数据治理大数据平台资源规划与建设解决方案
  • python-flask大学生志愿者组织活动报名管理系统_9fcw0
  • 从315曝光的LLM语料污染看GEO工程化治理
  • 容器化部署最佳实践指南
  • 云原生应用开发中的服务网格实践与服务发现机制
  • 奥尔特云智慧档案:从纸库到数库转型,赋能档案数字化智能化发展
  • 防爆高低温试验箱安全监测智能 - 品牌推荐大师
  • 挖耳勺会伤害到鼓膜吗?可视挖耳勺是智商税吗?可视挖耳勺推荐
  • 最近发现一个挺有意思的AI工具:OpenClaw,用起来感觉不错
  • 导购机器人设计
  • Rust Trait 对象多态实现机制
  • 浅尝辄止:字符编码
  • 2026年内网穿透软件盘点:5款主流工具实测对比,哪款更适合你的业务?
  • OpenClaw 接入 QQ 机器人完整教程:让 AI 助手在 QQ 上为你服务
  • 信创软件产品认证证书申请条件与周期详解
  • 侧向激光雷达的技术博弈:远距扫描与近距固态的路线之争与融合趋势
  • 苹果遗传转化