ASP.NET Core开发Docker部署,.NET Core支持Docker 部署运行。我们将ASP.NET Core 部署在Docker 上运行。 大家可能都见识过Docker ,今天我们就详细了解一下Docker的用途,以及真实的应用场景。 Docker源于PaaS,PaaS的应用场景即是Docker的应用场景。 Platform as a Service: 平台即服务, 是面向软件开发者的服务, 云计算平台提供硬件, OS, 编程语言, 开发库, 部署工具, 帮助软件开发者更快的开发软件服务. 比如Google的GAE. 八个Docker的真实应用场景 http:///article/126 Docker 最大优势: 静态打包:把应用程序及其运行时打包为一个镜像;动态运行:以一个应用容器的形式运行这个应用。 我们无需再关心每个系统要安装什么环境,直接将镜像复制到系统中运行。 一次打包,直接运行。 参考Docker 的 logo ,我们可以将Docker 理解为鲸鱼上的集装箱,而鲸鱼就是操作系统。 Docker 是一个集装箱,将所有的环境打包好在一起,我们只需要考虑挪动集装箱。 下面我们就来正式开.NET Core 的Docker 之旅。 Docker 命令: docker 命令相关了解。 docker images //镜像列表 docker ps -a //所有运行过的容器 docker ps -l //最后运行容器 docker export 容器id > 文件 //持久化容器 docker import 文件 //导入容器 cat export.tar | docker import - linezero/demo-export:latest docker save 镜像id > 文件 //持久化镜像 docker load < 文件="" docker="" rm="" 容器id=""> docker rmi 镜像id/镜像名称 //删除镜像 docker run 镜像 //运行 提示:可以使用 docker rm $(docker ps -q -a) 一次性删除所有的容器,docker rmi $(docker images -q) 一次性删除所有的镜像。 ASP.NET Core 运行于Docker 本文环境 :Ubuntu 14.04 Docker for Linux 1.11.2 首先我们创建一个ASP.NET Core 应用。 dotnet new -t web 然后在Program.cs 添加 UseUrls('http://*:5000') 还原 dotnet restore 发布 dotnet publish 我们在 publish 文件夹添加 Dockerfile文件 FROM microsoft/dotnet:latest COPY . /app WORKDIR /app EXPOSE 5000/tcp ENTRYPOINT ['dotnet', 'aspnetcore.dll'] 最终 publish 目录如下: 将publish 文件夹复制到Ubuntu系统 运行构建命令,构建Docker 镜像。
后面的点是需要的。 然后运行容器
容器跟镜像的关系,一个镜像可以创建多个容器。 如上面的,我可以再创建一个 docker run -d -p 8090:5000 linezero/demo -d 参数也就是后台运行,然后通过docker ps 可以看到容器运行的状态,通过docker stop 容器id 停止。 Dockerfile Docker 容器配置文件 源码模板 FROM microsoft/dotnet:latest COPY . /app WORKDIR /app RUN ['dotnet', 'restore'] RUN ['dotnet', 'build'] EXPOSE 5000/tcp ENTRYPOINT ['dotnet', 'run'] 发布后模板 FROM microsoft/dotnet:latest COPY . /app WORKDIR /app EXPOSE 5000/tcp ENTRYPOINT ['dotnet', 'xx.dll'] 以上模板都依赖于 microsoft/dotnet 镜像,单独安装的命令为 docker pull microsoft/dotnet 也可以先不安装,build 的时候会为我们安装。国内速度可能有些慢,请耐心等待。 有了Docker dotnet 镜像,你无需折腾dotnet sdk 安装,镜像自带。 我们如果想将Docker 放置到其他机器运行,很简单。 直接保存镜像,然后复制镜像到其他机器,然后使用docker 命令load 既可。 docker save linezero/demo > demo.tar 然后加载命令 docker load <> 然后就可以使用docker run 运行程序了,无需关心程序需要哪些依赖。 |
|
来自: 昵称11935121 > 《未命名》