(给DotNet加星标,提升.Net技能)

转自:沛山cnblogs.com/peyshine/p/12918315.html

一、分别在Windows/Mac/Centos上安装Docker

Windows上下载地址:https://docs.docker.com/docker-for-windows/install/(window上安装的常见问题和解决方案请参考下方步骤六)

Mac上下载地址:https://hub.docker.com/editions/community/docker-ce-desktop-mac

Centos上安装Docker请参考我上篇文章链接:https://www.cnblogs.com/peyshine/p/12915317.html

二、打开vs 新建一个Web程序

这里选择启动docker支持,主要是为了能够自动生成dockerfile文件,如果忘记勾选了也没关系,也可以右键解决方案,点击‘添加’,选择‘docker支持’,vs也会自动为我们生成dockerfile,大概长这个样子

对dockerfile文件解释说明:

1、FROM

通过FROM指令来设置要制作的镜像基于哪个镜像,FROM指令必须是整个Dockerfile的第一个指令,如果指定的镜像不存在默认会自动从Docker Hub上进行拉取

2、WORKDIR

通过workdir指令用于设置Dockerfile中的RUN、CMD和ENTRYPOINT指令执行命令的工作目录(默认为/目录),该指令在Dockerfile文件中可以出现多次,如果使用相对路径则为相对于WORKDIR上一次的值

3、COPY

通过COPY指令来从指定路径拷贝一个文件或目录到容器的指定路径中

4、RUN

RUN指令会在一个新的容器中执行任何命令,然后把执行后的改变提交到当前镜像,提交后的镜像会被用于Dockerfile中定义的下一步操作,RUN中定义的命令会按顺序执行并提交,这正是Docker廉价的提交和可以基于镜像的任何一个历史点创建容器的好处,就像版本控制工具一样

5、EXPOSE

通过EXPOSE指令用来告诉Docker这个容器在运行时会监听哪些端口

6、ENTRYPOINT

通过ENTRYPOINT指令我们指定在容器启动时要运行的应用程序

关于dockerfile的更多用法可以参考:https://docs.docker.com/engine/reference/builder/

三、.NET Core 程序在Windows Docker上的运行

直接在VS中选择以docker方式运行,VS的输出控制台就会打印以下信息内容

可以看到运行之前,VS先做了几个检查工作

  • windows上是否安装了Docker Desktop

  • Docker Desktop是否在运行

  • Docker Desktop的操作系统模式是否与项目的目标操作系统匹配

  • 指定需要的镜像本地是否存在,不存在的就会进行拉取

  • 检查完了之后就是打包镜像和运行容器

四、打包发布镜像到https://hub.docker.com/

选择发布到Docker hub,输入自己的账号密码,没有的话可以注册一个

点击发布之后,输出控制台可以看到有build打包的过程

发布完成之后,控制台会有对应的提示信息,已经成功推送带标记的‘latest’的Docker镜像

进入Docker hub上,在自己的账户的存储库下面会多处一个镜像文件,也就是刚刚推送过去的

点击进入,可以看到拉取的命令

在powershell中拉取自己的镜像

运行容器,运行成功会返回一个长的字符串,通过docker ps指令,可以查看容器已经成功运行起来了

那么这个镜像是否能在linux上拉取并运行呢?答案是否定的,因为在添加docker支持时候,我这边选了平台支持为windows,如图

步骤四:只是玩一下怎么打包推送镜像文件,不关注的可以直接跳过步骤四

五、DotNet Core 程序在Centos Docker上的运行

重新在VS中添加一个dockerfile,这次选择linux平台的

这次我们需要修改下dockerfile文件

因为我们提前编译并且发布出来了文件,所以在dockerfile中就不需要这些步骤了

贴一下dockerfile文件

3.1-buster-slim AS 

发布后将Release文件下所有文件上传到centos上,然后执行以下命令打包镜像

docker 

后面的点可以打印出具体的执行步骤细节

通过指令验证打包结果:# docker images

最后运行容器

docker 

可以看到容器已经运行起来,并且可以输出页面内容。

六、可能遇见的错误解决方案以及小提示

1、在window上安装docker时需要勾选上Hyper-V

2、如果在运行容器过程中依然提示错误:“The virtual machine could not be started because a required feature is not installed”,那就需要检查bios中的虚拟功能,拿我的华硕主板和inter处理器来示范,将Inter(VMX) Virtualization Tecjnology 的值设置为 Enabled

然后保存设置退出即可

3、当我们在windows上拉取镜像碰到提示镜像在当前操作系统不支持的时候,可以在linux和Windows容器之间切换。如图

推荐阅读  点击标题可跳转.NET Core 3.1运行Docke下实现负载均衡Docker 常用命令(.NET Core示例)ASP.NET Core 3.0跨平台开发体验: Docker

看完本文有收获?请转发分享给更多人

关注「DotNet」加星标,提升.Net技能

好文章,我在看❤️

windows制作docker镜像_.NET Core程序跑在任何有docker的地方相关推荐

  1. netcore docker_让.NetCore程序跑在任何有docker的地方

    一.分别在Windows/Mac/Centos上安装Docker Windows上下载地址:https://docs.docker.com/docker-for-windows/install/(wi ...

  2. 群晖nas中使用registry搭建docker镜像私人服务器以及设置群晖远程docker服务

    群晖nas中使用registry搭建docker镜像私人服务器以及设置群晖远程docker服务 折腾群晖服务器很有快感,一是因为自家群晖ds216+低功耗,24小时开机也不觉得费电,二是因为群晖系统也 ...

  3. 把代码和环境做成docker镜像_新手指南:如何将应用打包成为 Docker 镜像?

    虽然 DockerHub 提供了大量的镜像,但是由于企业环境的多样性,并不是每个应用都能在 DockerHub 找到对应的镜像来使用.那就要求企业的运维人员掌握制作 Docker 镜像的技能.在开始打 ...

  4. 系统制成docker镜像_如何让Docker基础镜像变得更小?

    本次实验是基于上一篇在<Centos7系统上制作一个7系的Docker镜像>方法制作,只是这次先在Centos65的系统上实现,并配置本人在减少镜像大小的一些思路和方法: 系统环境: Ce ...

  5. 如何优雅的利用Windows服务来部署ASP.NET Core程序

    上一篇文章中我给大家讲述了五种部署ASP.NET Core网站的方法,其中有一种方式是通过Windows服务来进行部署,这样既可以做到开启自启动,又不会因为iis的反向代理而损失部分性能.但是美中不足 ...

  6. 打docker镜像_使用docker构建自己的镜像

    在docker中,我们使用docker build构建一个新的镜像,构建镜像之前需要去编写Dockerfile这个文件才能否建一个新的镜像. 官方文档:https://docs.docker.com/ ...

  7. 打docker镜像_从安全到镜像流水线,Docker 最佳实践与反模式一览

    作者 | Timothy Mugayi 译者 | 弯月,责编 | 夕颜 封图 | CSDN付费下载自视觉中国 出品 | CSDN(ID:CSDNnews) 在使用Docker的大部分时间里,我们并不关 ...

  8. jar构建docker镜像_将jar包打包为docker镜像

    本文主要讲如何将一个jar包打包成一个docker镜像,并运行起来,这里我以metabase.jar为例,这个jar包可以直接使用下面命令进行运行: java -jar metabase.jar 接下 ...

  9. docker desktop ubuntu镜像_资深专家都知道的顶级 Docker 命令!

    开发人员一直在努力提高 Docker 的使用率和性能,命令也在不停变化.Docker 命令经常被弃用,或被替换为更新且更有效的命令,本文总结了近年来资深专家最常用的命令列表并给出部分使用方法. 目前, ...

最新文章

  1. Maven 项目模板
  2. Java容器类研究4:ArrayList
  3. java键盘输入运算符_Java基础学习-三元运算符和键盘录入的基本步骤和使用
  4. CCF NOI1150 确定进制
  5. Java中六大时间类的使用和区别
  6. mysql Communications link failure druid
  7. 深度优先遍历算法-01小偷偷东西问题
  8. numpy T、transpose()函数、swapaxes()函数
  9. python 用mysqldb方式操作数据库
  10. leetcode -- Reverse Nodes in k-Group
  11. 2,1 模型评估与选择
  12. 算法第四版C++算法实现全集
  13. 《金字塔原理》之表达的逻辑
  14. Oracle 字段 中文英文拆分
  15. iOS图像处理——人脸识别
  16. NetLimiter 4.0.15.0 x64 破解新鲜出炉!
  17. 交换安全(局域网安全)
  18. 如何在 Excel 图表中添加或删除次坐标轴?
  19. 生活中错误的英文——写错的标语
  20. 大数据毕设/课设 - 数据大屏监控可视化设计与实现

热门文章

  1. 简约好看导航栏(HTML、CSS)
  2. H5中 时间格式NAN-NAN-NAN
  3. node.js 报错Error: ENFILE: file table overflow...ENFILE: file table overflow, open...
  4. Open3d之计算点云凸包
  5. 201612-2工资计算
  6. 2021-03-14Java大数据Week2
  7. codewars028: Persistent Bugger
  8. 【操作系统/OS笔记14】经典同步问题:读者-写者问题、哲学家就餐问题
  9. caas k8s主控节点如何查询_k8s中部署prometheus监控告警系统prometheus系列文章第一篇...
  10. 预算执行审计计算机审计方法,预算执行审计中计算机审计思路和SQL语句运用.doc...