.Net Core in Docker极简入门(上篇)
Tips:本篇已加入系列文章阅读目录,可点击查看更多相关文章。 目录
前言Docker 是一个开源的应用容器引擎,它十分火热,如今几乎成为了后端开发人员必须掌握的一项技能。即使你在生产环境中可能用不上它,就算把它当作一个辅助开发的工具来使用,也是非常方便的。本文就介绍一下.Net Core应用在Docker中的一些基本使用。 开始环境准备首先安装docker,去官网下载:https://www.docker.com/get-started windows系统的话,默认win10(较新的版本更好,可以用wsl)。win7只能用Docker Toolbox,bug非常多,不建议使用。。。 windows/mac 直接下载对应的文件安装就可以(本文的系统环境是win10 2004版本。),linux可以通过命令来安装。关于安装,网上已经有很多资料了,就不多介绍。只是安装后有2个必要的设置需要注意一下:
默认docker的运行文件是在C盘,C盘空间不够的话,可以设置到别的盘。 新版本的windows Docker Desktop默认使用wsl运行: 这个设置比较麻烦,具体可以参考我之前的一篇:win10使用WSL 2运行Docker Desktop,运行文件从C盘迁移到其他目录。如果是老版本Hyper-V启动的话,界面上设置就可以。 Docker基础概念docker中最重要的2个概念就是“镜像”和“容器”。
要理解docker镜像和docker容器之间的区别,确实不容易。 想象一下,我们开发的一个asp.net mvc应用,使用Visual Studio将它发布出来后,会得到一堆发布后的文件,包含dll,cshtml,css,js,静态资源文件等等。那么这堆文件就类似于一个镜像,镜像是无法直接运行的。当我们把这堆文件挂载到IIS的一个站点上,就可以运行了,也能被外界访问了,这个IIS站点就类似是一个容器。容器相当于是镜像的一个运行实例,需要注意的是,容器的所有读写操作都只是针对容器的文件系统,并不会影响到镜像。一个镜像可以运行多个容器,容器之间是相互隔离的。 Docker基础命令
......
...... Docker命令实践下面在docker中使用sqlserver2019镜像启动一个容器。
注意,mcr.microsoft.com是微软的镜像源,国内访问会比较慢。。。
使用可视化工具连接数据库测试,工具有很多,我这里使用的是SQL Server Management(也可以直接在docker中使用命令进入容器连接数据库测试)。 使用账号sa/Password@2020连接。服务器名称localhost,1433这个1433也可以省略,默认端口就是1433。 测试连接成功。以上通过2个命令即可得到一个sqlserver2019数据库,是不是比直接安装到电脑上要方便很多呢。类似的很多开发环境都可以这么搭建,比如mysql,postgres,redis,mongodb,rabbitmq等等,各种工具随便折腾,玩坏了大不了删除容器,重新再来。。。 构建Docker镜像下面使用docker构建一个asp.net core web应用的镜像。 首先使用vs2019新建一个asp.net core web应用程序,选择web api作为项目模板。 Dockerfile右键项目-添加-Docker支持,目标OS选择Linux。 添加docker支持后,vs2019会自动帮我们创建Dockerfile文件。Dockerfile就是用来构建镜像的文件,其中包含了各种指令。以下是Dockerfile指令详解:
内容挺长,实际上做的事情主要就是通过.net core cli命令来定义了一系列打包发布运行的过程。 bulid & run来到项目根目录,启动PowerShell或cmd执行docker命令。 构建镜像: 使用 启动容器: 使用 浏览器访问:http://localhost:5000/weatherforecast 至此,一个简单的asp.net core web应用就成功运行于docker之中。 其实vs2019本身对docker支持就非常好,以上操作直接可以在vs2019中完成,无需手动执行docker命令。 将项目设置为Docker启动: Ctrl+F5即可启动: 注意,这里容器工具首次加载会比较慢。。。启动完成后会自动打开浏览器,并绑定了一个随机端口: 这就是vs2019自动帮我们创建的容器: 查看vs2019中容器工具的输出日志,可以看到vs2019执行的指令内容。 本篇先写到这里。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 是否由Razor支持lambda表达式?
- asp.net – ASP .NET 5 MVC 6身份3角色索赔组[已关闭]
- 如何启用用户从唯一一台计算机(通过获取CPU Serial)登录到A
- asp.net-mvc – 如果非活动状态超过安全标记验证间隔,则ASP
- .net – 在.aspx页面上引用代码隐藏属性?
- asp.net – 在双列表框中移动项目
- 如何从asp中检索多个选定的值:checkbox .net c#
- asp.net-mvc – 可以更改Html.DropDownListFor生成的html名
- asp.net-mvc – MVC 5 Bundle错误
- asp.net – 在MVC5应用程序中使用OWIN软件包的好处