在Windows上使用.NET部署到Docker 《让孩子们走出大坑》

这篇具有很好参考价值的文章主要介绍了在Windows上使用.NET部署到Docker 《让孩子们走出大坑》。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

折腾Docker 有几天了,整别的都没这个糟心。目前已经顺利部署运行起来了。顺便给大家分享下处理在Windows上使用.NET部署到Docker的相关问题解决方法。

 

1.  Docker无法安装问题

(下图是网上找了个类似的安装失败截图,页面大致一样,就是提示内容是 Docker Desktop 只能运行在win10 企业版/教育版 并且版本号1904以上)

在Windows上使用.NET部署到Docker  《让孩子们走出大坑》

 

首先呢我是Win10 教育版 并且版本长期不更新。

所以只能打开Windows更新 更新到1904版本吧,发现还是不行。于是升级到企业版好了。

以下是教育版升级企业版的方法

cmd命令提示符下依次操作如下命令即可:

lmgr.vbs /upk

slmgr /ipk NPPR9-FWDCX-D2C8J-H872K-2YT43

slmgr /skms zh.us.to

slmgr /ato

然后网上下一个免费的Win10激活工具 DragonKMS

然后就可以在Win10 上安装  Docker Desktop啦

至于Win7/Win8 可以安装 Docker Toolbox

2. starting the Docker Engine  /  Docker 命令失败,退出代码 125    

在这里要注意了,安装好后会默认启动Docker。

starting the Docker Engine  是Docker 客户端一直在start 状态(就是起不来,这个状态是启动中,正常状态是is runing,如下所示)

在Windows上使用.NET部署到Docker  《让孩子们走出大坑》

Docker 命令失败,退出代码 125    这是从VS 客户端启动时报的错 (其实百度搜一下Docker错误码,这话意思还是Docker起不起来)

主要的问题在2点

1.打开下面这五个功能再重启Docker试试

依然还是起不来的话就恭喜你往下看

在Windows上使用.NET部署到Docker  《让孩子们走出大坑》

 

在Windows上使用.NET部署到Docker  《让孩子们走出大坑》

 

2  适用于linnux的windows 子系统是打开了,但是wsl/wsl2 发行版没装

通过适用于 Linux 的 Windows 子系统 (WSL),开发人员可以安装 Linux 发行版(例如 Ubuntu、OpenSUSE、Kali、Debian、Arch Linux 等),所以需要选择一个具体的版本并安装,推荐安装WSL2具体的版本

以下是微软安装WSL具体版本的方法。

https://learn.microsoft.com/zh-cn/windows/wsl/install

安装完记得检查WSL/WSL 是否安装成功

以下是检查命令:

检查 Windows 11 上的 WSL 版本

要检查 Windows 11 上安装的 WSL 版本,请使用以下步骤:

1. 在 Windows 11 上打开开始。

2. 搜索Command Prompt,右键单击顶部结果,然后选择以管理员身份运行选项。

3. 键入以下命令以检查设备上是否安装了 WSL 2 或 WSL 1,然后按Enter 键:

wsl --list --verbose

在Windows上使用.NET部署到Docker  《让孩子们走出大坑》

 这应该是正常的返回值列表。

注意还有一步要做!!!

这时候大家的docker 应该都属于Runing 状态了,但是docker 默认是按照linux 环境配置的,可以切换到windows 环境。鼠标右键桌面右下角托盘内的docker图标, 中间的选项有一个 switch to windows containers..

docker在linux环境的配置选项 应该是  switch to windows containers..(目前在linux环境,点击后切换到windows环境)

docker在windows环境的配置选项 应该是  switch to linux containers..(目前在windows环境,点击后切换到linux环境)

 

3.分析引用时出错:“mcr.microsoft.com/dotnet/aspnet:5.0 AS base”不是有效的存储    

标注的位置不一定要是aspnet:5.0,可能也是 aspnet:8.0nanoserver-1809,net core3.1,xxxx 等。

当然这一步是概率问题。主要是docker拉取镜像源的网络此时与你不通罢了。

这一刻聪明的同学们就会去搜索 (中科大,163,微软中国,docker中国等等)国内镜像源地址,然后开心的发现没一个通的。所以要继续往后看:

以下提供本人阿里云杭州docker镜像源地址

针对安装了Docker for Windows的用户,您可以参考以下配置步骤:

在系统右下角托盘图标内右键菜单选择 Settings,打开配置窗口后左侧导航菜单选择 Docker Daemon。编辑窗口内的JSON串,填写下方加速器地址:

{
  "registry-mirrors": ["https://ku9r06hg.mirror.aliyuncs.com"]
}

编辑完成后点击 Apply 保存按钮,等待Docker重启并应用配置的镜像加速器。

注意

Docker for Windows 和 Docker Toolbox互不兼容,如果同时安装两者的话,需要使用hyperv的参数启动。

docker-machine create --engine-registry-mirror=https://ku9r06hg.mirror.aliyuncs.com -d hyperv defaul
其实,如果是企业或者个人想要尝试,也可以自己注册阿里云docker镜像源地址,在阿里云搜索框输入:镜像加速。
注册好就能用啦。

在Windows上使用.NET部署到Docker  《让孩子们走出大坑》

 4.支持docker的.Net版本有哪些

在Microsoft 搜索有关于Docker的文档有如下注解:

在Windows上使用.NET部署到Docker  《让孩子们走出大坑》

在Windows上使用.NET部署到Docker  《让孩子们走出大坑》

 

 看了官网这么多文档,大家应该知道了,微软非常建议大家使用.NET7/8 部署到docker;尤其推荐.NET8   (但是并不代表不支持低版本)

 以下放出支持的所有.NET版本:

在Windows上使用.NET部署到Docker  《让孩子们走出大坑》

总结起来就是:NET 5,6,7,8    NET CORE 2,3         部分framework            都能在docker中运行

只要能拉到镜像,那么此.NET框架就是在docker中允许运行的

可以用以下命令尝试拉取镜像:

docker pull 镜像名:标签 

(其实命令中不带标签也行)

以下是关于.NET 8 的镜像源

图像 注释
mcr.microsoft.com/dotnet/runtime:8.0 .NET 8 多体系结构:支持 Linux 和 Windows Nano Server,具体取决于 Docker 主机。
mcr.microsoft.com/dotnet/aspnet:8.0 ASP.NET Core 8.0 多体系结构:支持 Linux 和 Windows Nano Server,具体取决于 Docker 主机。
ASP.NET Core 的 aspnetcore 映像具有多个优化。
mcr.microsoft.com/dotnet/aspnet:8.0-bullseye-slim .NET 8 运行时-仅在 Linux Debian 发行版
mcr.microsoft.com/dotnet/aspnet:8.0-nanoserver-1809 .NET 8 运行时-仅在 Windows Nano Server 上(Windows Server 版本 1809)

目前镜像支持的.NET版本还挺丰富,我最低拉了个core 3.1,中间那些net 5/6/7 的镜像都删了(主要是docker强制装C盘,我这C盘强迫症犯了可就要把所有不用的文件全部移出C盘)

 

在Windows上使用.NET部署到Docker  《让孩子们走出大坑》

 

 

如果走到这里,基本所有的大坑都踩完了。再就是常规开发代码+顺顺利利部署了(手动播放奥特曼BGM:奇迹再现)

打开VS 新建 core/framework 项目

在Windows上使用.NET部署到Docker  《让孩子们走出大坑》

  •  选择镜像中支持的,.NET框架版本
  • 启用Docker(其实这里勾不勾选都无所谓)

因为所谓的Docker支持在微软官网的解释中就是一个    Dockerfile   文件(没有后缀的文本文档)

在Windows上使用.NET部署到Docker  《让孩子们走出大坑》

 大家有兴趣的话,可以在微软官网/文档=》搜索框输入:docker,出来的教学文档还挺多。

咋还可以在发布前添加docker支持

在Windows上使用.NET部署到Docker  《让孩子们走出大坑》

 

在Windows上使用.NET部署到Docker  《让孩子们走出大坑》

以下是糙米式讲解:

  •  用什么镜像
  •  构建誰
  • 启动谁

以下是细糠式讲解:

 1 # This my first nginx Dockerfile
 2 # Version 1.0
 3 
 4 # Base images 基础镜像
 5 FROM centos
 6 
 7 #MAINTAINER 维护者信息
 8 MAINTAINER tianfeiyu 
 9 
10 #ENV 设置环境变量
11 ENV PATH /usr/local/nginx/sbin:$PATH
12 
13 #ADD  文件放在当前目录下,拷过去会自动解压
14 ADD nginx-1.8.0.tar.gz /usr/local/  
15 ADD epel-release-latest-7.noarch.rpm /usr/local/  
16 
17 #RUN 执行以下命令 
18 RUN rpm -ivh /usr/local/epel-release-latest-7.noarch.rpm
19 RUN yum install -y wget lftp gcc gcc-c++ make openssl-devel pcre-devel pcre && yum clean all
20 RUN useradd -s /sbin/nologin -M www
21 
22 #WORKDIR 相当于cd
23 WORKDIR /usr/local/nginx-1.8.0 
24 
25 RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-pcre && make && make install
26 
27 RUN echo "daemon off;" >> /etc/nginx.conf
28 
29 #EXPOSE 映射端口
30 EXPOSE 80
31 
32 #CMD 运行以下命令
33 CMD ["nginx"]
指令 描述
FROM # 基础镜像,一切从这里开始构建
MAINTAINER 镜像是谁写的,姓名+邮箱
RUN 镜像构建的时候需要运行的命令
ADD 添加内容: 比如加一个tomcat压缩包
WORKDIR 镜像的工作目录
VOLUME 镜像挂载的目录
EXPOSE 保留暴露的端口
CMD 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可以被代替
ENTRYPOINT 指定这个容器启动的时候需要运行的命令,可以追加命令
ONBUILD 当构建一个被继承DockerFile 的时候就会运行 ONBUILD 的指令。触发指令
COPY 类似ADD ,将我们的文件拷贝到镜像中
ENV 构建的时候设置环境变量

 

因为在docker容器里端口和https证书都需要配置,所以本地注释https证书。仅配置容器端口和主机端口相通

以下注释了https证书相关配置

在Windows上使用.NET部署到Docker  《让孩子们走出大坑》

 以下dock容器端口绑定主机端口

在Windows上使用.NET部署到Docker  《让孩子们走出大坑》

 

紧接着一路开发下去,然后按照常规发布项目的方式发布到文件系统              (此处注意以下操作:)

在Windows上使用.NET部署到Docker  《让孩子们走出大坑》

 

项目内的dockfile 右键属性 ,复制到输出目录,设置始终复制

其实这一步你不设置,直接发布也行,将dockfile文件拷到发布目录一样行。(PS:手动笑脸) 

接下来全部交给dows窗体和docker命令啦

  • 管理员启动cmd
  • cd  到发布目录
  • docker build -t  你想要设置的镜像名称:1.0 .(它根据当前目录的dockerfile选择镜像源)
  • docker run -d -p 你的docker容器端口如:56555:绑定的主机端口(在appsettings.json,url节点绑定的端口要一致)--name 你想要的容器名称--restart=always 你上条命令的镜像名称:1.0
  • 最后在浏览器中访问docker部署的NET web应用程序

打开docker desctop,在containers,images选项中都能看到相关运行的容器和镜像源

在Windows上使用.NET部署到Docker  《让孩子们走出大坑》

 

 

 

 

在Windows上使用.NET部署到Docker  《让孩子们走出大坑》

 

 

 也可以在cmd中使用

docker ps -a             ---显示所有的容器,包括未运行的(不带-a 就是显示正在运行的容器)

在Windows上使用.NET部署到Docker  《让孩子们走出大坑》

 docker images           查看所有的镜像源

在Windows上使用.NET部署到Docker  《让孩子们走出大坑》

 


以下附上 菜鸟教程 docker 命令大全
https://www.runoob.com/docker/docker-command-manual.html
全剧终。。。。。。

 文章来源地址https://www.toymoban.com/news/detail-825469.html

到了这里,关于在Windows上使用.NET部署到Docker 《让孩子们走出大坑》的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • windows本地使用docker+nginx+mysql部署thinkphp5

    前言: Docker是一个开源的容器化平台,可以将应用程序及其依赖项打包到一个可移植的容器中,并在不同的环境中运行。容器是一个独立、可移植、可复制的软件单元,其中包含应用程序、运行时环境、系统工具和库。Docker利用容器的轻量级和快速启动的特性,提供了一种更

    2024年04月25日
    浏览(41)
  • 华为云云耀云服务器L实例评测|使用Linux系统与Docker部署.net/c#项目

    目录 前言 如何在CentOS运行项目 登录CentOS 使用Rider打包 使用Visual Studio打包 项目运行 后台运行 开放端口  如何在Docker中运行项目 项目运行 本章详细介绍,.net Core项目从打包到部署上华为云云耀云服务器L实例的过程与一些细节问题。在这里我们分别以系统镜像的CentOS和应用

    2024年02月09日
    浏览(46)
  • Windows-docker集成SRS服务器的部署和使用

    一、Windows Docker安装 Docker Desktop 官方下载地址: https://docs.docker.com/desktop/install/windows-install/ 下载windows版本的就可以了。 注意:此方法仅适用于 Windows 10 操作系统专业版、企业版、教育版和部分家庭版! 安装 Hyper-V 我们开启Hyper-V。 我们安装好Docker for Windows后,可以在CMD中执

    2024年02月10日
    浏览(43)
  • Windows安装使用Docker,方便你的开发和部署(DockerDesktop篇)

    前言 首先声明,此篇不是完全的 Docker 技术文章,而是单纯的教你使用 Docker , 不包含 Docker 的一些命令、如何打包 Docker 镜像等等。 为什么要用 Docker ? 大家好,我是小简,今天带来一篇 Windosw 环境下使用 Docker 的教程,非常方便哦。 不需要说什么容器化、什么持续集成,

    2024年02月03日
    浏览(30)
  • .net和jar包windows服务部署

      1.创建启动脚本run_instal.bat,例如程序文件为ApiDoc.exe serviceName 服务名,如果多个单子可以有空格,但必须用\\\"\\\"包起立 description 服务说明         BinPath  路径 %~dp0 当前bat文件路径         start=auto 开机自动启动         start: 启动服务   2.卸载脚本run_unstall.bat windows服

    2024年02月19日
    浏览(38)
  • .net项目部署Docker

    1、项目生成的bin目录下创建Dockerfile文件 2、制作镜像 blog2 jar包名称 . 搜索Dockerfile 3、启动镜像

    2024年02月09日
    浏览(35)
  • ASP.NET Core教程:ASP.NET Core 程序部署到Windows系统

    本篇文章介绍如何将一个ASP.NET Core Web程序部署到Windows系统上。这里以ASP.NET Core WebApi为例进行讲解。首先创建一个ASP.NET Core WebApi项目,使用默认的Values控制器,这里使用Visual Studio 2019创建一个ASP.NET Core 3.1d的WebApi项目。 创建新项目的时候选项ASP.NET Core Web应用程序,如下图所

    2023年04月08日
    浏览(56)
  • Windows Server 2012 R2 部署.net6网站

    目录 安装Windows操作系统补丁 安装VC_Redist 安装.net6的Hosting Bundle IIS新增网站 IIS配置应用程序池 报错:缺少api-ms-win-crt-runtime-l1-1-0.dll 无法访问注册表Access to the registry key is denied 之前部署在Windows Server 2016上很正常没有什么问题 但是在2012 R2上部署失败(503),网上搜查后,发现

    2024年02月11日
    浏览(47)
  • 如何将.NET 8.0的ASP.NET Core Web API部署成Windows服务

    前面写了一篇关于将.NET应用转换成Windows服务的方法,其实真正的目的是为了探索如何将Asp.Net Core Web Api 部署成Windows 服务。基于上一篇的基础,只需把创建 WebApplication 的代码放到 BackgroundService 的ExecuteAsync方法中即可。 其中比较重要的一个细节就是需要指定一下配置:    

    2024年01月17日
    浏览(52)
  • 部署.net6 到 Windows server 2008 r2 IIS

    首先安装vc环境,文件下载:x64:https://go.microsoft.com/fwlink/?LinkId=746572 x86:https://go.microsoft.com/fwlink/?LinkId=746571 安装net6:dotnet-hosting-6.0.14-win.exe,下载地址: Download .NET 6.0 (Linux, macOS, and Windows)Download ASP.NET Core 6.0 Runtime (v6.0.14) - Windows Hosting Bundle Installer   安装完成之后,在iis的模块

    2024年02月02日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包