zoukankan      html  css  js  c++  java
  • 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 本人还未涉猎,留待以后补充吧。

  • 相关阅读:
    HDU 1124 Factorial
    hdu 1690 Bus System
    hdu 1113 Word Amalgamation
    POJ 2482 Stars in Your Window
    hdu 1385 ZOJ 1456 Minimum Transport Cost(经典floyd)
    hdu 1907 John
    VMware 虚拟机 安装 UBuntu 9.10 命令模式转换成窗口模试
    #pragma CODE_SEG __NEAR_SEG NON_BANKED详解
    Ubuntu 下Hadoop 伪分布式 hadoop0.20.2.tar.gz 的安装
    文件拷贝代码以及疑问
  • 原文地址:https://www.cnblogs.com/jesen1315/p/11433839.html
Copyright © 2011-2022 走看看