容器技术

Docker容器部署技术 & 持续交付流水线

☆樱花仙子☆ 提交于 2020-01-24 17:18:46
随着微服务的流行,容器技术也相应的被大家重视起来。容器技术主要解决了以下两个问题: 一、环境一致性问题: 例如java的jar/war包部署会依赖于环境的问题(操着系统的版本,jdk版本问题)。 二、镜像部署问题: 例如java,rubby,nodejs等等的发布系统是不一样的,每个环境都得很麻烦的部署一遍,采用docker镜像,就屏蔽了这类问题。 下图是Docker容器部署的一个完整过程:基于镜像治理和多环境的持续交付流水线 更重要的是,拥有如此多服务的集群环境迁移、复制也非常轻松,只需选择好各服务对应的Docker服务镜像、配置好相互之间访问地址就能很快搭建出一份完全一样的新集群。 蓝绿、金丝雀和灰度发布: 目前基于容器的调度平台有Kubernetes,mesos,omega。 资源调度框架Mesosj架构: 基于容器云发布体系: 来源: CSDN 作者: Java剑主 链接: https://blog.csdn.net/qq_41723615/article/details/104076752

Docker入门介绍

醉酒当歌 提交于 2020-01-24 13:55:30
Docker是一种虚拟化技术 刚開始看Docker,感觉非常抽象“An open platform for distributed applications for developers and sysadmins”这是Docker的标语。 “一个服务于分布式系统的开发人员和运维人员的开放平台”。不是非常好理解,直到文档中不断地和虚拟机做对照,才理解到它可能是和虚拟机相关的技术。Docker是LXC容器技术的典型代表,LXC技术能够实如今同一主机执行多个隔离的linux系统,通过linux内核功能实现轻量级的虚拟机。Docker技术尽管是虚拟化技术,却差点儿不消耗除容器中的应用程序外的其它资源,能够达到近乎裸机的执行能力,达到秒级/微秒级的部署。一台实体机能够执行几百甚至上千个docker容器。并且有非常高的移植性,能够在不论什么平台执行(包括物理机、虚拟机、云平台)。 普通虚拟机和Docker 容器的差别 每个虚拟机不仅包括程序、程序须要的包。并且还包括了一个操作系统,可是Docker容器是共享一个操作系统内核(kernel)的,这些容器通过命名空间相互独立,执行起来就像是在宿主机上的一个孤立的线程。并且他们的执行地点非常的多样化,不论什么设备都能够。 Docker的基本架构 Docker解决的问题 图中白色部分即为Docker Build

标准模板库STL介绍

醉酒当歌 提交于 2020-01-24 11:01:49
库是一系列程序组件的集合,他们可以在不同的程序中重复使用。C++语言按照传统的习惯,提供了由各种各样的函数组成的库,用于完成诸如输入/输出、数学计算等功能。 1. STL介绍 标准模板库STL是当今每个从事C++编程的人需要掌握的技术,所有很有必要总结下 本文将介绍STL并探讨它的三个主要概念:容器、迭代器、算法。 STL的最大特点就是: 数据结构和算法的分离,非面向对象本质。访问对象是通过象指针一样的迭代器实现的; 容器是象链表,矢量之类的数据结构,并按模板方式提供; 算法是函数模板,用于操作容器中的数据。由于STL以模板为基础,所以能用于任何数据类型和结构。 容器可以分为三种主要类型: 序列容器、关联容器、容器适配器。 每种STL容器都具有相关联的成员函数,这些成员函数的一个子集在所有的STL容器中都定义了。 STL迭代器的属性和指针类似,程序可以利用迭代器操作STL容器中的元素 STL算法是用于执行常见数据操作的函数,这些操作包括搜索、排序和比较元素,STL提供了大约70种算法,其中大多数算法都使用迭代器来访问容器元素。 1.1 容器简介 容器可以分为三种:序列容器、关联容器、容器适配器。 序列容器 :vector deque list Vector:可从后端执行快速的插入和删除,直接访问任何元素 Deque:从前面或后面执行快速的插入和删除,直接访问任何元素 List

是时候考虑让你的 Spark 跑在K8s 上了

泪湿孤枕 提交于 2020-01-24 03:18:16
原文链接:https://mp.weixin.qq.com/s/RT7QNQNQ0NRsAmwUMtw6ig 编者荐语: Spark社区从2.3版本开始,已经可以很好的支持跑着Kubernetes上了。这对于统一资源池,提高整体资源利用率,降低运维成本(特别是技术栈归一)有着非常大的帮助。这些趋势是一个大数据人不得不重视的信号,所以一起提前了解并考虑起来吧! 以下文章来源于容器魔方 ,作者tsjsdbd 大数据邂逅云计算 相信玩Spark的你已经注意到最新的Spark版本已经支持不做任何修改就可以直接跑在K8s上了,即以Kubernetes容器集群作为Cluster Manager的实现。 其实早在2017年底Spark 2.2版本开始的时候,Spark社区就开始合入用K8s管理Spark集群的能力,只是那时候功能上还没有很完善。加之彼时Kubernetes还没有像现在这么普及,被广泛地接受成为应用基础设施层。经过了2年了持续迭代,Spark on Kubernetes已经成为帅气的小伙,大家可以围观起来了。 其实,大数据和云计算一直分属两个不同的领域。大数据主要关注怎么将数据集中起来,挖掘数据的价值;云计算主要关注怎么更高效地使用资源,提升资源的利用效率。当大数据发展到一定阶段的时候,它就会和云计算不期而遇。 现状并不美丽 在技术层面上

快速理解什么是镜像、容器、docker、k8s

戏子无情 提交于 2020-01-24 02:55:28
写本文是自己对所掌握技术体系的一些俯瞰总结,初心以最简的解释来理解和概括这些概念,检验自己在对应领域的理解熟练度。 目录 对镜像的理解 容器是什么? Docker是什么?干什么用的? k8s又是做什么的? 对镜像的理解 可以理解为系统在某个时候的一个快照,是一组rootfs,一个不含内核的Linux文件系统,相比于一个虚拟机完整的磁盘镜像来说轻便的多。 创建镜像时基于联合挂载的方式创建出一套文件系统,Ubuntu中是aufs(Advance UnionFS)。联合挂载的目录下,有一个完整的操作系统目录供容器使用。 镜像分层概念(多增量rootfs联合挂载):镜像层(只读层)、容器层(读写层)、初始化层(init),每层对应包含了操作系统中一部分目录。Init 层是 Docker 项目单独生成的一个内部层,专门用来存放 /etc/hosts、/etc/resolv.conf等信息。 分层设计使得容器镜像需要的总空间缩小。 容器是什么? 首先,容器是一个进程,是一个特殊的进程。 可以把容器想象为一个沙盒,一个集装箱,能把你的应用装起来的一种技术。容器要把应用装起来那就需要边界,所谓的边界就是基于Linux Namespace(隔离)、Linux Cgroups(限制)、rootfs(文件系统)构建的隔离环境,是一种特殊的进程,其中Cgroups 技术是用来制造约束的主要手段,而

数据库连接池

北战南征 提交于 2020-01-23 21:09:06
概念 其实就是一个容器(集合),存放数据库连接对象的容器。 当系统初始化完毕之后,容器被创建,容器中会申请一些数据库连接对象,当用户来访问数据库的时候,会从容器当中获取连接对象,用户访问完毕之后,会将连接对象归还给容器。 优点 1、节约资源 2、用户访问效率高 实现 标准接口: Interface Datasource 获取连接: getConnection() 归还连接:如果连接对象 Connection 是从连接池获取的,使用 Connectin.close() 方法将会归还对象 C3P0:数据库连接池技术 Druid(德鲁伊):由阿里巴巴实现,是目前最好的数据库连接池技术 Druid(德鲁伊)基本使用 步骤 导入jar包druid-1.0.9.jar 配置文件properties 获取数据库连接池对象:通过工厂类(DruidDataSourceFactory)来获取 获取连接 代码实现 import com . alibaba . druid . pool . DruidDataSourceFactory ; import javax . sql . DataSource ; import java . io . IOException ; import java . io . InputStream ; import java . util . Properties ;

docker网络配置方法总结

孤街浪徒 提交于 2020-01-23 01:49:02
1. docker报【Error response from daemon: Error running DeviceCreate (createSnapDevice) dm_task_run failed】错 解决办法: # systemctl stop docker.service # thin_check /var/lib/docker/devicemapper/devicemapper/metadata If there were no errors then proceed with: # thin_check --clear-needs-check-flag /var/lib/docker/devicemapper/devicemapper/metadata # systemctl start docker.serviceIf there were errors, you are on your own, but 'man thin_check' and 'man thin_repair' may be helpful... ======================================================== 2. docker默认添加的iptables(ip相关的自己定制): docker nat表部分: docker0IP=

01Docker简介

試著忘記壹切 提交于 2020-01-22 22:33:04
文章目录 1、Docker是什么 1.1、Docker为什么会出现 1.2、Docker理念 1.3、Docker是什么 2、Docker能做什么 2.1、之前的虚拟化技术 2.2、容器虚拟化技术 2.3、Docker能做什么 1、Docker是什么 镜像,环境打包 https://docs.docker.com/get-started/ 1.1、Docker为什么会出现 一款线上产品从开发到上线,从操作系统,到运行环境,再到应用配置。作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司不得不面对的问题,特别是各种版本的迭代之后,不同版本环境的兼容,对运维人员都是考验。 Docker之所以发展如此迅速,也是因为它对此给出了一个标准化的解决方案。 环境配置如此麻烦,换一台机器,就要重来一次,费时费力。很多人想到,能不能从根本上解决问题,软件可以带环境安装?也就是说,安装的时候,把原始环境一模一样的复制过来。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作的”问题。 传统上认为,软件编码开发/测试结束后,所产出的成果即是程序或是能够编译执行的二进制字节码等(java为例)。而为了让这些程序可以顺利执行,开发团队也得准备完整的部署文件,让运维团队得以部署应用程式,开发需要清除的告诉运维部署团队,用的全部配置文件+所有软件环境。不过,即便如此

云原生时代的微服务

[亡魂溺海] 提交于 2020-01-22 20:28:30
序言 4月24日,中国信息通信研究院主办的首届云原生产业大会在北京举行,在《云原生数字引领未来》的主题演讲中,阿里云容器服务总监易立表示:“云原生不但可以很好的支持互联网应用,也在深刻影响着新的计算架构、新的智能数据应用。以容器、服务网格、微服务、Serverless为代表的云原生技术,带来一种全新的方式来构建应用。”本段内容根据易立演讲内容整理而成。 一 云原生技术的优势 CNCF给出了云原生应用的三大特征: 容器化封装:以容器为基础,提高整体开发水平,形成代码和组件重用,简化云原生应用程序的维护。在容器中运行应用程序和进程,并作为应用程序部署的独立单元,实现高水平资源隔离。 动态管理:通过集中式的编排调度系统来动态的管理和调度。 面向微服务:明确服务间的依赖,互相解耦。 云原生包含了一组应用的模式,用于帮助企业快速,持续,可靠,规模化地交付业务软件。云原生由微服务架构,DevOps 和以容器为代表的敏捷基础架构组成。 这边引用网上关于云原生所需要的能力和特征总结,如下图: 从云原生的三大特征和图中我们可以清晰的了解到:云原生技术中,微服务和云容器结合将会使项目的部署和运维变得更方便、简捷。 二 云原生与微服务的结合 传统的Web开发方式,一般被称为单体架构(Monolithic)所有的功能打包在一个WAR包里,基本没有外部依赖(除了容器),部署在一个JEE容器(Tomcat

小白服务器编程指北(2)——用Docker编配你的服务器环境

跟風遠走 提交于 2020-01-22 18:29:30
安装Docker 首先要安装Docker。Docker底层使用的是Linux的容器技术。 所以,为了能够使用Docker,我们需要一台安装了兼容版本的Linux内核和二进制文件的最小化功能宿主机。 笔者这里使用了CentOS 7操作系统。 Step1. Update Docker Package Database 更新yum的repo: sudo yum check - update Step 2: Install the Dependencies 接下来安装Docker的依赖库: sudo yum install - y yum - utils device - mapper - persistent - data lvm2 The yum-utils switch adds the yum-config-manager. Docker uses a device mapper storage driver, and the device-mapper-persistent-data and lvm2 packages are required for it to run correctly. yum-utils会安装yum-config-manager,用于我们下一步配置Docker repo。 Docker需要使用设备存储映射驱动(device mapper storage