如何容器化你的 ASP.Net Core

开发 前端
Docker 相比 虚拟机 具有更轻量级,更便捷的特性,为什么这么说呢?虚拟机通常打包了完整的操作系统,而容器只仅仅打包了你的应用程序,运行环境及相关依赖库,Docker 是一种开源的工具包,帮助你更加方便的构建,部署,管理容器。

[[385207]]

本文转载自微信公众号「码农读书」,作者码农读书。转载本文请联系码农读书公众号。

Docker 相比 虚拟机 具有更轻量级,更便捷的特性,为什么这么说呢?虚拟机通常打包了完整的操作系统,而容器只仅仅打包了你的应用程序,运行环境及相关依赖库,Docker 是一种开源的工具包,帮助你更加方便的构建,部署,管理容器。

容器通常被定义为包含了 代码和相关依赖库 的应用程序软件单元,这里的 单元 意味着应用程序运行在拥有自己的独立环境上,言外之意就是容器和容器之间是相互隔离的,值得注意的是,虽然容器之间是隔离的,但它们还是共享一个操作系统,这个操作系统可以是 Windows 或者 Linux,这也是Docker的诱惑点之一,这篇文章我们将会讨论如何在 Windows 平台上使用 Docker 部署 ASP.Net Core。

Windows 上安装 Docker

要想在 Windows 上安装 Docker,可以参考官方链接:https://docs.docker.com/docker-for-windows/install/ ,由于篇幅的原因,这里就不赘述了,根据文档所述安装好之后,可以使用如下命令来测试 Docker 是否已经安装成功。

  1. docker --version 

创建含 Docker 的 Asp.Net Core 项目

使用 Visual Studio 2019 创建 ASP.Net Core Web Application 模板的时候,记得勾选一下 Enable Docker Support ,在 OS 处选好 Windows 即可,如下图所示:

 

当项目创建好之后,解决方案下会自动生成一个 Dockerfile 文件,如下图所示:

 

Dockerfile 大体如下:

  1. FROM microsoft/aspnet:4.7.2-windowsservercore-1803 
  2. ARG source 
  3. WORKDIR /inetpub/wwwroot 
  4. COPY ${source:-obj/Docker/publish} . 

Dockerfile 的目的主要是用来描述如何构建 docker images,你也可以根据自己的场景修改默认的 dockerfile ,比如说修改 From 镜像名将 host 从 windows 切换到 linux 上。

部署 ASP.Net Core 到 Docker

首先通过 Visual Studio 对项目进行 build,然后用管理员模式开启 cmd 窗口,在命令窗口上输入如下命令。

  1. docker build -t dockersample . 

上面的命令将会把应用程序构建成名为 dockersample 的镜像,下图就展示了这个 build 的过程。

 

images 生成好之后,接下来就可以通过 images 实例化出一个 application 容器,使用如下命令即可。

  1. docker run -d -p 8080:80 --name myapp dockersample 

上面的 myapp 表示你的容器名字, 后面的 dockersample 就是之前构建好的镜像名,如果一切正常,此时应用程序就成功跑在 container 上了,你可以通过浏览器键入 http://localhost:8080/api/values 地址来调用 ValuesController.Get() 方法判断是否一切正常。

Docker 的一些常用命令

要想列出所有的 images,可以使用如下命令。

  1. docker image ls 

要想列出所有的容器,使用如下命令。

  1. docker container ls –all 

要想停止容器,使用如下命令。

  1. docker stop containername 

要想删除某一个容器,可以使用如下命令。

  1. docker rm containername 

值得注意的是,如果要删除的容器正在运行中,此时你是删除不掉的,正确的做法是先停止容器,然后再删除。

容器给了应用程序极小轻量的运行环境,相比虚拟机,容器更加轻量级,而且容器一旦启动,你的应用程序几乎同时启动,Docker 是一种开源的容器化解决方案,现如今也是主流的容器化方式,关于更多的 Docker 讨论会在后面的文章中一一展开。

 

译文链接:https://www.infoworld.com/article/3314897/how-to-dockerize-an-aspnet-core-application.html

 

责任编辑:武晓燕 来源: 码农读书
相关推荐

2021-01-05 07:51:06

版本化ASP

2021-03-17 09:45:31

LazyCacheWindows

2021-02-02 16:19:08

Serilog日志框架

2021-02-06 21:40:13

SignalR通讯TypeScript

2021-11-01 14:52:38

ElasticSear索引SQL

2021-03-10 09:40:43

LamarASP容器

2021-01-28 22:39:35

LoggerMessa开源框架

2021-02-28 20:56:37

NCache缓存框架

2021-02-03 13:35:25

ASPweb程序

2021-01-07 07:39:07

工具接口 Swagger

2021-01-31 22:56:50

FromServiceASP

2021-03-03 22:37:16

MediatR中介者模式

2021-02-19 06:54:33

配置系统ASP.NET Cor

2018-08-20 08:03:46

跨平台 Web操作系统

2024-06-11 09:00:00

异步编程代码

2024-09-09 07:37:51

AspJWT权限

2021-03-18 07:33:54

PDF DinkToPdfC++

2021-02-07 17:29:04

监视文件接口

2021-04-14 07:35:12

Json格式化日期

2023-07-03 08:48:40

Web模块化设计
点赞
收藏

51CTO技术栈公众号