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 本人还未涉猎,留待以后补充吧。
Docker准备的更多相关文章
- docker——容器安装tomcat
写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...
- Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境
首先为什么要自己编写Dockerfile来构建 nginx.php.mariadb这三个镜像呢?一是希望更深入了解Dockerfile的使用,也就能初步了解docker镜像是如何被构建的:二是希望将来 ...
- Docker 第一篇--初识docker
已经多年不写博客, 看完<晓松奇谈>最后一期猛然觉醒, 决定仔细梳理下自己这几年的知识脉络. 既然决定写, 那么首先就从最近2年热门的开源项目Docker开始.Docker 这两年在国内很 ...
- 在docker中运行ASP.NET Core Web API应用程序(附AWS Windows Server 2016 widt Container实战案例)
环境准备 1.亚马逊EC2 Windows Server 2016 with Container 2.Visual Studio 2015 Enterprise(Profresianal要装Updat ...
- docker for mac 学习记录
docker基本命令 docker run -d -p 80:80 --name webserver nginx 运行容器并起别名 docker ps 展示目前启动的容器 docker ps -a 展 ...
- scrapy爬虫docker部署
spider_docker 接我上篇博客,为爬虫引用创建container,包括的模块:scrapy, mongo, celery, rabbitmq,连接https://github.com/Liu ...
- [原][Docker]特性与原理解析
Docker特性与原理解析 文章假设你已经熟悉了Docker的基本命令和基本知识 首先看看Docker提供了哪些特性: 交互式Shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上, ...
- 开发者的利器:Docker 理解与使用
困扰写代码的机器难免会被我们安装上各种各样的开发工具.语言运行环境和引用库等一大堆的东西,长久以来不仅机器乱七八糟,而且有些相同的软件还有可能会安装不同的版本,这样又会导致一个项目正常运行了,却不小心 ...
- 使用python自动生成docker nginx反向代理配置
由于在测试环境上用docker部署了多个应用,而且他们的端口有的相同,有的又不相同,数量也比较多,在使用jenkins发版本的时候,不好配置,于是想要写一个脚本,能在docker 容器创建.停止的时候 ...
- 微服务与Docker介绍
什么是微服务 微服务应用的一个最大的优点是,它们往往比传统的应用程序更有效地利用计算资源.这是因为它们通过扩展组件来处理功能瓶颈问题.这样一来,开发人员只需要为额外的组件部署计算资源,而不需要部署一个 ...
随机推荐
- java+上传一个文件夹
在web项目中上传文件夹现在已经成为了一个主流的需求.在OA,或者企业ERP系统中都有类似的需求.上传文件夹并且保留层级结构能够对用户行成很好的引导,用户使用起来也更方便.能够提供更高级的应用支撑. ...
- CF504E Misha and LCP on Tree 后缀自动机+树链剖分+倍增
求树上两条路径的 LCP (树上每个节点代表一个字符) 总共写+调了6个多小时,终于过了~ 绝对是我写过的最复杂的数据结构了 我们对这棵树进行轻重链剖分,然后把所有的重链分正串,反串插入到广义后缀自动 ...
- CSP-S 2019 D1T2 括号树
题目链接:[https://www.luogu.com.cn/problem/P5658] 思路: 这道题不难.(为什么我在考场上一点思路也没有??) 假设我们已经处理到树上的节点u(假设1为根节点) ...
- 代码 | 用ALNS框架求解一个TSP问题 - 代码详解
写在前面 前面好多篇文章,我们总算是把整个ALNS的代码框架给大家说明白了.不知道大家对整个框架了解了没有.不过打铁要趁热,心急了要吃热豆腐.今天就来实战一下,教大家怎么用ALNS的代码框架,求解一个 ...
- python获取当前天气情况
利用 Python 从互联网公开服务中获取天气预报信息.天气信息来源网站:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx实现以下 ...
- HDU 4609 3-idiots ——(FFT)
这是我接触的第一个关于FFT的题目,留个模板. 这题的题解见:http://www.cnblogs.com/kuangbin/archive/2013/07/24/3210565.html. FFT的 ...
- CodeForces - 1183E Subsequences (easy version) (字符串bfs)
The only difference between the easy and the hard versions is constraints. A subsequence is a string ...
- JSP(工作原理,组成部分,指令标签,动作标签,隐式对象)
目录 JSP JSP 什么是JSP JSP全名为Java Server Pages 中文名叫java服务器页面 它是在传统的网页HTML文件(.htm,.html)中插入Java程序段和JSP标记 后 ...
- sql查询表的所有字段和表字段对应的类型
1.查询表的所有字段 select syscolumns.name from syscolumns where id=object_id('写上要查询的表名') 2.查询表的所有字段+表字段对应的类型 ...
- SpringBoot视图层技术
一.SpringBoot整合jsp 在maven的dependencies的依赖中除了springBoot启动器还要添加对jstl和jsp的依赖. <dependencies> <d ...