Docker准备

1. 引言

  Docker是目前最流行的容器技术,是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。是开发人员和系统管理员使用容器开发,部署和运行应用程序的平台。也许我们都有一个经历,当开发完某个项目发布到测试系统后测试通过验收上线,到了线上版本却出现了一些问题,这种往往就是因为测试环境和生产环境不一样所导致的。那么使用docker容器进行部署就可以解决此问题,因为当你打包好一个docker镜像后,不管是放到windows上的docker还是linux上的docker,其运行结果都是一致的。

  容器技术正变得越来越重要,因为其拥有以下特点:

  • 灵活:即使是最复杂的应用也可以集装箱化。
  • 轻量级:容器利用并共享主机内核。
  • 可互换:您可以即时部署更新和升级。
  • 便携式:您可以在本地构建,部署到云,并在任何地方运行。
  • 可扩展:您可以增加并自动分发容器副本。
  • 可堆叠:您可以垂直和即时堆叠服务。

  在容器技术出现之前,我们部署应用往往是部署在真机或者是虚拟机上,那么我们来看下对比图

  可以看到容器在本机上运行,并与其他容器共享主机的内核。它运行一个独立的进程,不占用任何其他可执行文件的内存,使其轻量级。相比之下,虚拟机(VM)运行一个完整的“客户”操作系统,通过虚拟机管理程序对主机资源进行虚拟访问。通常,VM提供的环境比大多数应用程序需要的资源更多。

   更多关于docker的文档可以看官网: https://docs.docker.com/get-started/ 。

2. 安装

  windows 10可以安装 Docker for Windows Installer.exe 。这里不再介绍具体安装方法。关于在linux上安装docker,可以参考我的另一篇文章:初识docker 。

3. 将Asp.Net Core项目部署在docker上

  随着微软拥抱开源,对容器的支持力度也不断加大,甚至在VS中可以直接添加docker支持生成 Dockerfile 文件。关于Asp.Net Core构建docker镜像可以参考我的微信公众号文章:https://mp.weixin.qq.com/s/Qd1SEoekOmvGy7CzeGLoAg ,这里就不再重复介绍了,毕竟也很简单。

  虽然Dockerfile可以让我们很方便的构建一个单独的容器,但是在工作中,经常会碰到需要多个容器相互配合来完成某项任务。这时候就需要使用docker-compose来解决了。compose允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目,具体使用也可以在我的微信公众号文章中找到:https://mp.weixin.qq.com/s/gEuFjUk9MUS-qWpHj8MGUg 。此处愣是推广了下自己的订阅号,欢迎关注哈,目前大多数文章是和博客园一样的备份,方便自己在手机上可以查看复习。

  docker-compose使用YAML 格式,YAML不是一门标记语言,号称是一种所有编程语言的人性化数据序列化标准。但它的官网 https://yaml.org/ 样式本人是不敢苟同。那么看下它的格式吧。

  • YAML 文件可以由一个或多个文档组成(也即相对独立的组织结构组成),文档间使用“---”(三个横线)作为每个文档开始的分隔符。同时可以使用“...”(三个点号)作为结束符(可选)
  • YAML 认为数据由以下三种结构组成,标量 (相当于数据类型),序列 (相当于数组和列表),键值表(相当于 Map 表)
  • YAM 文件的编写规范:
    • 文档使用 Unicode 编码作为字符标准编码,例如 UTF-8
    • 使用“#”来表示注释内容
    • 使用空格(个数不限,一般2个或4个)作为嵌套缩进工具,不能使用tab缩进
    • 序列表示:
      • 使用“-”(横线) + 单个空格表示单个列表项;
      • 使用"[]"表示一组数据;
      • 组合表示。每个结构都可以嵌套组成复杂的表示结构。
    • 键值表
      • 使用 “:”(冒号) + 空格表示单个键值对 ,比如 date: 2015-02-01
      • 使用"{}"表示一个键值表,如 items: {number: 1234, descript: cpu, price: 800.00}
      • "? " 问号+空格表示复杂的键。当键是一个列表或键值表时,就需要使用本符号来标记。
      • 组合表示。每个结构都可以嵌套组成复杂的表示结构。 
    • 文本块
      • 使用 “|” 和文本内容缩进表示的块:保留块中已有的回车换行。相当于段落块
      • 使用 “>” 和文本内容缩进表示的块:将块中回车替换为空格,最终连接成一行。
      • 使用定界符“”(双引号)、‘’(单引号)或回车表示的块:最终表示成一行。
    • 数据类型的约定
      • 对一些常用数据类型的表示格式进行了约定
      • !(叹号)显式指示类型,或自定义类型标识。单叹号通常是自定义类型,双叹号是内置类型
    • 锚点与引用:定义数据的复用。使用 “&” 定义数据锚点(即要复制的数据),使用 “*” 引用上述锚点数据(即数据的复制目的地)

4. Docker集群

  至于docker swarm 或者 k8s 本人还未涉猎,留待以后补充吧。

原文地址:https://www.cnblogs.com/jesen1315/p/11433839.html