容器技术

030、实现容器的底层技术(2019-01-25 周五)

让人想犯罪 __ 提交于 2020-02-29 07:09:43
参考 https://www.cnblogs.com/CloudMan6/p/7045784.html 为了更好的理解容器的特性,本节我们将讨论容器的底层实现技术。 cgroup 和 namespace 是最重要的两种技术。 cgroup 实现资源限额 , namespace 实现资源隔离 cgroup 全程 Control Group 。Linux操作系统通过 cgroup 可以设置进程使用CPU、MEM 和 IO 资源的限额。就是我们前面学习的参数 --cpu-shares -m --device-write-bps root@docker-lab:~# docker run -it --cpu-shares 512 progrium/stress -c 1 # 启动容器,设置cpu.shares 512 stress: info: [1] dispatching hogs: 1 cpu, 0 io, 0 vm, 0 hdd stress: dbug: [1] using backoff sleep of 3000us stress: dbug: [1] --> hogcpu worker 1 [7] forked root@docker-lab:~# docker ps # 查看容器ID CONTAINER ID IMAGE COMMAND CREATED STATUS

实现容器的底层技术

一世执手 提交于 2020-02-29 07:04:52
https://www.cnblogs.com/CloudMan6/p/7045784.html 为了更好地理解容器的特性,本节我们将讨论容器的底层实现技术。 cgroup 和 namespace 是最重要的两种技术。cgroup 实现资源限额, namespace 实现资源隔离。 cgroup cgroup 全称 Control Group。Linux 操作系统通过 cgroup 可以设置进程使用 CPU、内存 和 IO 资源的限额。相信你已经猜到了:前面我们看到的 --cpu-shares 、 -m 、 --device-write-bps 实际上就是在配置 cgroup。 cgroup 到底长什么样子呢?我们可以在 /sys/fs/cgroup 中找到它。还是用例子来说明,启动一个容器,设置 --cpu-shares=512 : 查看容器的 ID: 在 /sys/fs/cgroup/cpu/docker 目录中,Linux 会为每个容器创建一个 cgroup 目录,以容器长ID 命名: 目录中包含所有与 cpu 相关的 cgroup 配置,文件 cpu.shares 保存的就是 --cpu-shares 的配置,值为 512。 同样的,/sys/fs/cgroup/memory/docker 和 /sys/fs/cgroup/blkio/docker 中保存的是内存以及

微服务的「扩展立方」与 Docker 化实践

隐身守侯 提交于 2020-02-28 23:33:59
微服务的扩展立方模型 “扩展立方模型”是指微服务架构的在拆分时包括三个维度,如上图所示,X 轴表示水平副本,通过副本进行扩展;Y 轴表示功能解耦,通过分解功能,在不同模块之间的扩展;Z 轴是数据分区,一个系统会有一些业务和数据,微服务架构可以通过数据分区的形式进行扩展。 Docker 的两大核心技术 Docker 主要包含两个方面的技术: 一方面是容器技术,可以进行物理资源的有效分配与管理,并实现资源隔离,从这个角度看来,容器跟虚拟机的理念比较类似。容器的诞生会占 据虚拟机的一些市场,但不是完全替代虚拟机,主要是隔离强度的问题,容器技术是共享内核资源的,在一些比较严苛的状况下,虚拟机更胜一筹。 Docker 的第二个技术——镜像技术。打破了 “代码即应用” 的观念,Docker 真正实现了从系统环境开始,自底向上地打包一个软件。Docker 解决了软件的环境一致性问题,使得软件的分发与交付异常便捷。 Docker 如何让微服务架构更简单? 如下图所示,结合微服务的「扩展立方」来看,Docker 镜像的一致性可以保证水平扩展,部署秒级,扩展立方的 Y轴,是功能解耦,可以把一个系统分成不同的模块,Docker 的优势是 application-centric,Docker 镜像完全独立。在数据分区方面,Docker 与数据服务结合,在这个方面,Docker 还有一些路要走。

浅析Docker容器的应用场景

☆樱花仙子☆ 提交于 2020-02-28 12:34:54
过去几年开源界以OpenStack为代表的云计算持续火了好久,这两年突然又冒出一个叫Docker的容器技术,其发展之迅猛远超预料。 网上介绍Docker容器的文章已经很多了,用一句话概括:Docker是一种轻量虚拟化的容器技术,提供类似虚拟机的隔离功能,并使用了一种分层的联合文件系统技术管理镜像,能极大简化环境运维过程。 Docker容器云则是使用Docker技术打造的一站式容器云服务平台,即CaaS(Containers as a Service)——容器即服务;可以将它简单看作为PaaS的升级版,使用Docker容器技术的CaaS平台功能更强大,使用灵活,部署更方便。 Docker容器作为一个全新的概念虽然广受关注,但是对于如何使用Docker,将容器技术真正落地用起来,目前估计很多人还没有非常清晰的思路。写这篇文章主要目的就是根据Docker容器的特点,描述Docker容器到底能用来干什么,达到抛砖引玉的目的。 可以认为容器云是处于IaaS和PaaS之间的位置,容器编排集成度越高越像PaaS,反之越像IaaS,据此这里简单地将Docker容器的使用分两大类:主机和服务。 1. 作为云主机使用 相比虚拟机来说,容器使用的是一系列非常轻量级的虚拟化技术,使得其启动、部署、升级跟管理进程一样迅速,用起来灵活又感觉跟虚拟机一样没什么区别

移动web开发之响应式布局

徘徊边缘 提交于 2020-02-28 06:57:34
01.响应式开发 1.1响应式开发原理 1.2响应式布局容器 案例:响应式导航 02.Bootstrap前端开发框架 2.1 Bootstrap简介 2.2 Bootstrap使用 2.3布局容器 03. Bootstrap 栅格系统 3.1栅格系统简介 3.2栅格选项参数 3.3列嵌套 3.4列偏移 3.5列排序 3.6响应式工具 04.阿里百秀首页案例 05.移动端布局总结 5.1移动端主流方案 5.2移动端技术选型 来源: CSDN 作者: 冲冲冲冲` 链接: https://blog.csdn.net/Better_Xing/article/details/104518647

Docke基础篇

六月ゝ 毕业季﹏ 提交于 2020-02-28 00:18:34
docker介绍 docker思想 Docker的思想源于集装箱,集装箱解决了什么问题呢? 在早期运输货物需要不同分类的船,例如运输水果的船,运输生活用品的船 有了集装箱后,在大船上,可以把货物分类到不同的集装箱中,水果一个集装箱,生活用品一个集装箱 它们之间互不影响,只要把货物封装好集装箱里,就可以把不同类的货物一起运走。 通过Docker logo也可以看出所以然来,Docker就像大船,集装箱就是容器 一条鲸鱼拖着若干个集装箱的经典形象已经深入人心 什么是docker Docker 是应用最广泛的开源容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中 docker实质就像虚拟机一样,就好像是一个具有独立操作系统的真实机器 每个容器拥有一套和宿主机完全隔离的文件系统(共用linux内核),程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样 虚拟机是有真正的linux内核的,真实需要通过 .ios 文件安装操作系统 而我们的docker共享linux宿主机内核,只有一个linux文件系统 容器 容器是一个操作系统级别下的虚拟化技术,运行一个容器就行运行一个进程一样 容器依赖linux内核特性:Namespace(资源隔离)和Cgroups(资源限制) docker技术应用场景 场景一:节省项目环境部署时间 1)单项目打包 每次部署项目到测试、生产等环境

基于DotNet构件技术的企业级敏捷软件开发平台 AgileEAS.NET - 插件运行容器

…衆ロ難τιáo~ 提交于 2020-02-27 14:34:17
上一篇 AgileEAS.NET之插件接口IModule 中我们介绍了EAS.NET模块插件契约,在本文我们将介绍一下调用插件的运行容器,即平台。 AgileEAS.NET平台最早是应用于基于WinForm技术开发管理信息系统应用的,所以基于WinForm的运行容器最为成熟,在应用WinForm技术的运行容器我们提供了三种:传统的WinForm容器、基于智能客户端技术的运行容器和基于WinForm和WebForm技术结合的ActiveXForm容器,也提供了基于纯WebForm技术的运行容器。 废话不说了,下面我贴出传统WinForm容器和SmartClient容器的运行效果: 看不清楚图片的朋友,请打开原图看吧,这是基于WinFrom技术的插件运行效果,目前插件在容器中的运行方式有两类,第一类是直接嵌入到容器界面中,如上图一个标签页代码一个模块插件,另一类是以独立的WinForm方式运行,如下图: 我们提供基于导航列表以及工具条和菜单结合的两种模块插件导航方式,默认情况下,左边导航列表或者导航树自动收起的,在具体应用项目中,可以根据情况选择何种导航方式,菜单或者导航中的一个叶子项均指向一个目标模块插件的。 当某个操作员(账户)登录平台后,平台权限检查系统加载登录操作员所拥有执行权限的模块并加载到业务导航栏和导航菜单,最后秀一下登录界面。 特别提示一下,AgileEAS

Spring中ioc的实现原理

五迷三道 提交于 2020-02-27 06:45:09
学习过Spring框架的人一定都会听过Spring的IoC(控制反转) 、DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC 、DI这两个概念是模糊不清的,是很难理解的,今天和大家分享网上的一些技术大牛们对Spring框架的IOC的理解以及谈谈我对Spring Ioc的理解。 一、分享Iteye的开涛对Ioc的精彩讲解   首先要分享的是Iteye的开涛这位技术牛人对Spring框架的IOC的理解,写得非常通俗易懂,以下内容全部来自原文,原文地址:http://jinnianshilongnian.iteye.com/blog/1413846 1.1、IoC是什么    Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。 在Java开发中, Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。 如何理解好Ioc呢?理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,那我们来深入分析一下:   ● 谁控制谁,控制什么: 传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对 象的创建; 谁控制谁?当然是IoC 容器控制了对象;控制什么

Effective STL 条款18

随声附和 提交于 2020-02-27 05:58:40
Item18避免使用vector<bool> 做为一个STL容器,vector<bool>有两个问题.第一,它不是一个真正STL容器,第二,它并不保存bool类型. 除此以外,并没有太多东西与本节题目有关(译注,还不够多吗) 一个东西不能成为一个STL容器,只因为会有人说它是一个(译注,:( ).一个东西要成为STL容器,必须满足所有 列于C++标准23.1节的容器要求.在这些要求中,有这样一条:如果C是一个T类型元素容器,并且C支持operator[] 那么以下代码必须能够编译: T *p = &c[0]; // initialize a T* with the address // of whatever operator[] returns 换句话说,如果你使用operator[]来得到Container<T>中的一个T对象,你可以对它取地址从而得到一个指针. (假设T没有重载opeartor&.译注:原句为This assumes that T hasn't perversely overloaded operators. 从意译)因此,如果vector<bool>可能成为容器,那么,这些代码必须编译通过: vector<bool> v; bool *pb = &v[0]; // initialize a bool* with the address of // what

docker --help 详解

妖精的绣舞 提交于 2020-02-27 02:52:30
[root@c1 _src]# dockerd --help Usage: dockerd [OPTIONS] A self-sufficient runtime for containers. Options: --add-runtime=[] Register an additional OCI compatible runtime --api-cors-header Set CORS headers in the remote API --authorization-plugin=[] Authorization plugins to load -b, --bridge #指定容器使用的网络接口,默认为docker0,也可以指定其他网络接口 --bip #指定桥接地址,即定义一个容器的私有网络 --cgroup-parent #为所有的容器指定父cgroup --cluster-advertise #为集群设定一个地址或者名字 --cluster-store #后端分布式存储的URL --cluster-store-opt=map[] #设置集群存储参数 --config-file=/etc/docker/daemon.json #指定配置文件 -D #启动debug模式 --default-gateway #为容器设定默认的ipv4网关(--default-gateway