代码编织梦想

云原生技术的知识体系构建

第一部分:docker学习笔记。
后续不断补充。



前言

云计算时代应需求而产生和大规模运用的Docker。
目前的技术水平已经真正的进入了云计算时代,各大基础设施纷纷上云。很多大企业将所有业务都迁移到了云上。而云的基础设施就是 Docker,准确的说是容器,而 Docker 正是当下最主流的容器技术。
Docker 是基础设施,是因为 Docker 的资源限制和隔离性是云上必不可少的特性。相比于之前每个部门的应用申请一堆物理机来部署自己的应用进程,使用云计算的方式来统一管理公司所有的应用使得资源的使用率更加的高。 那么这么多的应用部署到一起就需要解决三个主要问题:应用隔离、应用部署和资源限制。


一、Docker 是什么?

在这里插入图片描述

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
一个完整的Docker有以下几个部分组成:

Docker 包括三个基本概念:

镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
在这里插入图片描述

我们通过客户端写命令,然后客户端将命令发送给守护进程,守护进程再将命令执行的结果返回给客户端,这就使我们能通过命令查看执行结果,镜像就是容器的源代码,容器通过镜像启动,使用仓库来保存用户构建的镜像,仓库分为共有和私有。

二、Docker用来干什么

2.1应用隔离

很容易理解,比如不同的应用依赖了冲突的基础软件包,如果都直接部署在操作系统环境下,必然会引起冲突。这个时候就需要应用之间互相隔离。Docker 使用操作系统底层的 Namespace 技术来做隔离是一种主流的技术方案。

2.2 应用部署

在容器技术诞生之前,所有的应用都是直接部署在操作系统上面的,彼此之间共享底层的操作系统资源,比如内存、CPU、磁盘等。 打个比方,如果我们要将应用 A 和应用 B 部署到同一台机器上,那么这两个应用需要的环境信息,我们都需要满足。如果应用 A 和 B 的环境依赖之间存在冲突,或者说不兼容,那么管理起来就会非常的困难。 而这个问题,我们通过容器的镜像技术却可以非常简单地解决掉。除此之后,Docker 技术还有很多相比于传统技术更加优势的地方,这也 Docker 技术能够迅猛发展起来的根本原因。

2.3资源限制

不同的应用共享集群不可避免的涉及到资源使用限制的问题。比如一个公司同时有多个业务部门使用一个统一的集群,在统计研发成本时,需要统计各个部门的资源使用情况然后做划分。这样我们就可以根据资源使用限制来划分,当某些应用资源使用超限就杀掉应用。Docker 使用内核提供的 Cgroup 技术来做资源限制正好可以应用到这个场景。

2.4 项目中的实际用途

a. Web 应用的自动化打包和发布。
b. 自动化测试和持续集成、发布。
c. 在服务型环境中部署和调整数据库或其他的后台应用。
d. 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境


三、Docker的优点

3.1简化程序:

Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的 任务,在Docker容器的处理下,只需要数秒就能完成。

3.2 避免选择恐惧症:

如果你有选择恐惧症,还是资深患者。Docker 帮你 打包你的纠结!比如 Docker 镜像;Docker 镜像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。

3.3 节省开支:

一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。
tips: 预算什么时候都是宝贵的,钱要花到刀刃上去。

3.4一致性:

容器非常适合持续集成和持续交付(CI / CD)工作流程,请考虑以下示例方案:
您的开发人员在本地编写代码,并使用 Docker 容器与同事共享他们的工作。
他们使用 Docker 将其应用程序推送到测试环境中,并执行自动或手动测试。
当开发人员发现错误时,他们可以在开发环境中对其进行修复,然后将其重新部署到测试环境中,以进行测试和验证。
测试完成后,将修补程序推送给生产环境,就像将更新的镜像推送到生产环境一样简单。
Docker 允许开发人员使用您提供的应用程序或服务的本地容器在标准化环境中工作,从而简化了开发的生命周期。
tips: 对于工程化管理非常重要。

下一篇:Docker 在 Centeros上的安装。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_16430177/article/details/127157835

云原生生态周报 vol. 1 _weixin_34184158的博客-爱代码爱编程

业界要闻 1 在上周于旧金山举办的 Google Cloud Next 2019 大会上,Google Cloud正式发布了: Cloud Run。是业界第一个基于Knative + Kubernetes + gVisor 体系的Serverless 服务。允许开发者在完全受管理的无服务器执行环境中,运行无状态 HTTP 驱动的容器。

docker入门_xinming_365的博客-爱代码爱编程

Docker简介 Docker 镜像(image) 镜像是一个可执行的包,它包含了所有用来执行某个软件所需要的内容,包括代码,运行时,库,环境变量,还有配置文件。 Docker容器(container) 容器是镜像运

docker学习笔记_wyc-的博客-爱代码爱编程

文章目录 1. Docker学习笔记1.1. Docker简介1.2. Ubuntu安装Docker CE(社区版)1.2.1. 卸载旧版本1.2.2. 使用存储库安装1.2.2.1. 设置存储库1.2.2.2. 安

KubeFATE: 用云原生技术赋能联邦学习(一)-爱代码爱编程

题图摄于北海公园 联邦学习是AI领域一个新兴的方向,被认为是 AI 领域最重要的研究和应用趋势之一。联邦学习可在用户之间进行联合建模,构造精确的人工智能模型,同时数据不用离开机构,可以保证双方数据的隐私安全性,应用前景广阔,因此,联邦学习已经得到越来越广泛的关注。 我们 VMware 云原生实验室的团队参与了联邦学习开源项目 FATE

KubeFATE: 用云原生技术赋能联邦学习(二)-爱代码爱编程

题图摄于加州一号公路 (接上期,文后附视频) 本文作者系 VMware 云原生实验室工程师陈家豪,FATE / KubeFATE 开源联邦学习项目的贡献者。 概述 在前面的文章中,我们介绍过如何使用KubeFATE来部署一个单节点的FATE联邦学习集群。在真实的应用场景中,联邦学习往往需要多个参与方联合起来一起完成任务。基于此,本文将

Spring Boot 2 学习笔记(2 / 2)-爱代码爱编程

Spring Boot 2 学习笔记(1 / 2) ---45、web实验-抽取公共页面46、web实验-遍历数据与页面bug修改47、视图解析-【源码分析】-视图解析器与视图48、拦截器-登录检查与静态资源放行49、拦截器-【源码分析】-拦截器的执行时机和原理50、文件上传-单文件与多文件上传的使用51、文件上传-【源码流程】文件上传参数解析器52、错

云原生时代——投资人视角下的云原生趋势思考-爱代码爱编程

今天我们不讲行业和商业,讲讲近几年最热的概念——云原生(Cloud Native)。 我认为云原生是未来10年IT发展最重要的趋势,但是它涵盖的概念非常多,需要花很多时间研究,同时浩如烟海的资料分散在网络上各个地方,缺乏系统性的梳理。去年2月我在基金内部做过一个分享,今日成文,希望让更多的人有所了解。 本文试图解答: 为什么云原生概念具有革

从0到1 CTFer成功之路》任意文件读取漏洞---学习笔记-爱代码爱编程

1.3 任意文件读取漏洞 所谓文件读取漏洞,就是攻击者通过一些手段可以读取服务器上开发者不允许读到的文件。从整个攻击过程来看,它常常作为资产信息搜集的一种强力的补充手段,服务器的各种配置文件、文件形式存储的密钥、服务器信息(包括正在执行的进程信息)、历史命令、网络信息、应用源码及二进制程序都在这个漏洞触发点被攻击者窥探。 文件读取漏洞常常意味着被攻击者的

尚医通项目学习笔记Part1-爱代码爱编程

尚医通项目学习笔记 前言一、目前学习进度二、学习记录1.项目简介1.1 项目所会用到的技术栈1.2 业务流程2.项目学习笔记2.1MyBatis-Plus相关2.2搭建项目框架2.3前端搭建2.3.1前端开发流程2.3.2前端开发3.service/cmn开发Part1小结 前言 最近在跟着B站上面尚硅谷的视屏学习尚医通的项目,想要通

Web 漏洞训练平台学习笔记(webgoat & juice shop)-爱代码爱编程

Web 漏洞训练平台 实验目的 了解常见 Web 漏洞训练平台;了解 常见 Web 漏洞的基本原理;掌握 OWASP Top 10 及常见 Web 高危漏洞的漏洞检测、漏洞利用和漏洞修复方法;实验环境 WebGoat / Juice shopkali 2021.2实验要求 每个实验环境完成不少于 5 种不同漏洞类型的漏洞利用练习 (可选)使用不同

springboot2源码学习笔记 续_ζั͡ ั͡三 ั͡藏 ั͡✾的博客-爱代码爱编程

45、web实验-抽取公共页面 官方文档 - Template Layout 公共页面/templates/common.html<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"><!--注意要添加xmlns:th才能添加thymelea

k8s学习笔记6-搭建监控kube-prometheus_狂奔的蜗牛x的博客-爱代码爱编程

k8s学习笔记6-搭建监控kube-prometheus 一.介绍二.部署1.源文件下载2.镜像文件下载3.部署 三.验证四.登录grafana,并导入模板1.主机详情的dashboard2.pod,servic

容器化管理k8s部署踩坑记录_海棠花不香的博客-爱代码爱编程

基本概念的理解 k8s是一种编排工具,类似于docker-compose,但是应用比后者广泛。 k8s水平扩展访问,本质上是增加pod,且新增的pod均匀分布在不同的机器上。 概念的层级关系k8s–node(对应一台物