• ASP.NET Core开发-Docker部署运行


    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://dockone.io/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 build -t linezero/demo .

    后面的点是需要的。

    然后运行容器

    docker run -it -p 8080:5000 linezero/demo

     

    容器跟镜像的关系,一个镜像可以创建多个容器。

    如上面的,我可以再创建一个 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 < demo.tar

    然后就可以使用docker run 运行程序了,无需关心程序需要哪些依赖。

    如果你觉得本文对你有帮助,请点击“推荐”,谢谢。

  • 相关阅读:
    PHP琐碎学习
    php输出echo、print、print_r、printf、sprintf、var_dump比较
    跨域
    react中配置路径别名
    react antd less(3.11.1) less-loader(5.0.0) webpack(4.42.0)设置antd的主题
    babel-plugin-import配置babel按需引入antd模块
    react配置less步骤
    react配置less后浏览器报错npm install @babel/core @babel/preset-env node_moduleswebpackhotdev-server.js: Cannot find module '@babel/helper-create-regexp-features-plugin'
    win10配置Java环境变量
    关于自定义组件的组件命名规范
  • 原文地址:https://www.cnblogs.com/linezero/p/docker.html
Copyright © 2020-2023  润新知