容器

docker和k8s

本秂侑毒 提交于 2020-02-04 15:15:14
1、docker不是容器,而是创建容器的工具; 容器和虚拟机 镜像、仓库、容器 2、k8s 一个K8S系统,通常称为一个 K8S集群(Cluster) 。 这个集群主要包括两个部分: 一个Master节点(主节点) 一群Node节点(计算节点) 一看就明白:Master节点主要还是负责管理和控制。Node节点是工作负载节点,里面是具体的容器。 深入来看这两种节点。 首先是 Master节点。 Master节点包括API Server、Scheduler、Controller manager、etcd。 API Server是整个系统的对外接口,供客户端和其它组件调用,相当于“营业厅”。 Scheduler负责对集群内部的资源进行调度,相当于“调度室”。 Controller manager负责管理控制器,相当于“大总管”。 然后是 Node节点 。 Node节点包括Docker、kubelet、kube-proxy、Fluentd、kube-dns(可选),还有就是 Pod 。 Pod是Kubernetes最基本的操作单元。一个Pod代表着集群中运行的一个进程,它内部封装了一个或多个紧密相关的容器。除了Pod之外,K8S还有一个Service的概念,一个Service可以看作一组提供相同服务的Pod的对外访问接口。 Kubelet,主要负责监视指派到它所在Node上的Pod

35、标准模板类(STL)(一),综述、容器及其操作

风流意气都作罢 提交于 2020-02-04 14:16:01
C++的 STL 是一个功能强大的库,它是建立在模板机制上,能够满足用户对存储管理不同类型数据的通用容器和施加在这些容器上的通用算法的巨大需求,并且具有完全的可移植性。因此在寻求程序的解决方案时,应该首先在 STL 中寻求恰当的容器和算法。 STL 是一个通用性极高的编程工具,这种通用性不仅表现在可以使用通用的容器存储和管理任意类型的数据,更重要的是可以对不同的容器施加统一通用的算法和操作。实现这种通用性的关键思想就是:通过引进一个间接层对象对不同结构的数据容器进行统一的访问操作,从而简化了对容器的操作,使得实现操作的算法和函数通用化。这种思想是 STL 的设计原则之一,也是软件设计中一个重要设计思想。 在 STL 中对容器访问的简化和独立就是通过循环子实现的,循环子可以无须依据某种特定容器的数据结构而完成对容器元素的访问,从而使得数据的存储结构与施加于数据的操作相互独立。标准模板库 STL 是由容器类模板,用于访问这些容器的循环子类模板和可以通过循环子在这些容器上实现的各种算法类模板以及函数类模板组成的。STL 为这种标准算法和函数(包括用户定义的函数)借助循环子在容器上实现的应用建立了统一的规则。 容器:可容纳各种数据类型的数据结构。 迭代器:可依次存取容器中元素的东西,连接容器和算法 算法:用来操作容器中的元素的函数模板。例如,STL用sort(

容器技术与DevOps

断了今生、忘了曾经 提交于 2020-02-04 13:51:04
容器技术的使用支撑了目前 DevOps 三大主要实践:工作流、及时反馈、持续学习。 有人说容器技术与 DevOps 二者在发展的过程中是互相促进的关系。得益于 DevOps 设计理念的流行,容器生态系统在设计上与组件选择上也有相应发展。同时,由于容器技术在生产环境中的使用,反过来也促进了 DevOps 三大主要实践: 支撑 DevOps 的三个实践 。 工作流 容器中的工作流 每个容器都可以看成一个独立的运行环境,对于容器内部,不需要考虑外部的宿主环境、集群环境,以及其它基础设施。在容器内部,每个功能看起来都是以传统的方式运行。从外部来看,容器内运行的应用一般作为整个应用系统架构的一部分:比如 web API、web app 用户界面、数据库、任务执行、缓存系统、垃圾回收等。运维团队一般会限制容器的资源使用,并在此基础上建立完善的容器性能监控服务,从而降低其对基础设施或者下游其他用户的影响。 现实中的工作流 那些跟“容器”一样业务功能独立的团队,也可以借鉴这种容器思维。因为无论是在现实生活中的工作流(代码发布、构建基础设施,甚至制造 《杰森一家》中的斯贝斯利太空飞轮 等),还是技术中的工作流(开发、测试、运维、发布)都使用了这样的线性工作流,一旦某个独立的环节或者工作团队出现了问题,那么整个下游都会受到影响,虽然使用这种线性的工作流有效降低了工作耦合性。 DevOps 中的工作流

喵星之旅-狂奔的兔子-基于docker的redis分布式集群

巧了我就是萌 提交于 2020-02-04 13:38:08
一、docker安装(略) 二、下载redis安装包(redis-4.0.8.tar.gz)   以任何方式获取都可以。自行官网下载。 三、拉取centos7的docker镜像   命令:docker pull centos:7   这种基于操作系统的安装也适合虚拟机、真机等环境,而且之前查询资料也都是这种情况开始,没有看到直接跳过这步的样例。 四、创建docker网络   由于集群环境要求有明确的ip配置,需要提供固定ip,所以这里创建容器时指定ip,这就要求有可用的网络信息。     docker network create --subnet=172.19.0.0/16 mynetwork 五、创建容器   由于计划每个容器配置两个redis,所以需要3个容器,也可以直接创建6个容器。   docker run -d -v /home/bunny/cento7s/01:/data --network=mynetwork --ip=172.19.0.11 centos:7 /usr/sbin/init   docker run -d -v /home/bunny/cento7s/01:/data --network=mynetwork --ip=172.19.0.12 centos:7 /usr/sbin/init   docker run -d -v /home/bunny

14.容器资源需求、资源限制及HeapSter

允我心安 提交于 2020-02-04 12:53:14
一、容器资源需求及资源限制: 1、概念 Requests:资源需求,最低保障。 Limits:资源限额,硬限制。限制容器无论怎么运行都不能超过的资源阈值 一般来讲,requests <= limits CPU:可压缩资源。一颗逻辑CPU,即一核。1=1000,millicores 内存:不可压缩资源。Ei,Pi,Ti,Gi,Mi,Ki ==> 以1024为进制。 2、定义资源需求及限制 资源需求和资源限制都是定义在容器上的。 [root@master ~]# kubectl explain pod.spec.containers.resources 使用方法文档: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ 测试: [root@master metrics]# kubectl exec pod-metrics-demo top 宿主机内核总数是2核,定义的资源limits是0.5m,所以应该是25%,此处13%,原因未明,可能与宿主机是VMVare虚拟机有关。后续再研究。 查看,CPU的limit是与定义匹配的,但内存未符合预期,可能压测效果不够。 3、服务质量QoS Class 我们对容器分配了资源限制后,k8s会自动分配一个QoS,叫服务质量 QoS

操作 Docker 容器 访问 Docker 仓库28

我是研究僧i 提交于 2020-02-04 12:07:23
操作 Docker 容器 28 启动容器 新建并启动 启动已终止容器 守护态运行 终止容器 进入容器 attach 命令 exec 命令 -i -t 参数 访问 Docker 仓库 Docker Hub 注册 登录 拉取镜像 推送镜像 自动创建 Docker 私有仓库 安装运行 docker-registry 容器运行 在私有仓库上传、搜索、下载镜像 注意事项 Ubuntu 16.04+, Debian 8+, centos 7 其他 容器是 Docker 又一核心概念。 简单的说,容器是独立运行的一个或一组应用,以及它们的运行态环境。对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环境)和跑在上面的应用。 本章将具体介绍如何来管理一个容器,包括创建、启动和停止等。 启动容器 启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态( stopped )的容器重新启动。 因为 Docker 的容器实在太轻量级了,很多时候用户都是随时删除和新创建容器。 新建并启动 所需要的命令主要为 docker run 。 例如,下面的命令输出一个 “Hello World”,之后终止容器。 $ docker run ubuntu:14.04 /bin/echo 'Hello world' Hello world 这跟在本地直接执行 /bin

华为云服务器安装 Docker 容器

不羁岁月 提交于 2020-02-04 11:45:12
简介 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。 Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。 Docker的应用场景 Web 应用的自动化打包和发布。 自动化测试和持续集成、发布。 在服务型环境中部署和调整数据库或其他的后台应用。 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。 Docker 的优点 Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。 1、快速,一致地交付您的应用程序 Docker

什么是容器技术

纵然是瞬间 提交于 2020-02-04 10:44:40
一、什么是容器技术 容器这个词,当你第一眼看它或许脑子里是这东西:瓶瓶罐罐、装水、装其他东西的玩意。不管是什么,总的来说,容器给人第一印象就是--用来装东西。 那今天我们要说的容器技术是怎么一个概念呢?其实,IT里的容器技术是英文单词Linux Container的直译。container这个单词有集装箱、容器的含义(主要偏集装箱意思)。我们知道,海边码头里的集装箱是运载货物用的,它是一种按规格标准化的钢制箱子。集装箱的特色,在于其格式划一,并可以层层重叠,所以可以大量放置在特别设计的远洋轮船中(早期航运是没有集装箱概念的,那时候货物杂乱无章的放,很影响出货和运输效率)。有了集装箱,那么这就更加快捷方便的为生产商提供廉价的运输服务。 因此,IT世界里借鉴了这一理念。早期,大家都认为硬件抽象层基于hypervisor的虚拟化方式可以最大程度上提供虚拟化管理的灵活性。各种不同操作系统的虚拟机都能通过hypervisor(KVM、XEN等)来衍生、运行、销毁。然而,随着时间推移,用户发现hypervisor这种方式麻烦越来越多。为什么? 因为对于hypervisor环境来说,每个虚拟机都需要运行一个完整的操作系统以及其中安装好的大量应用程序。但实际生产开发环境里,我们更关注的是自己部署的应用程序,如果每次部署发布我都得搞一个完整操作系统和附带的依赖环境,那么这让任务和性能变得很重和很低下

04-容器 What, Why, How

非 Y 不嫁゛ 提交于 2020-02-04 10:44:25
What - 什么是容器? 容器是一种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运行。开发人员在自己笔记本上创建并测试好的容器,无需任何修改就能够在生产系统的虚拟机、物理服务器或公有云主机上运行。 容器与虚拟机 谈到容器,就不得不将它与虚拟机进行对比,因为两者都是为应用提供封装和隔离。 容器由两部分组成: 应用程序本身 依赖:比如应用程序需要的库或其他软件 容器在 Host 操作系统的用户空间中运行,与操作系统的其他进程隔离。这一点显著区别于的虚拟机。 传统的虚拟化技术,比如 VMWare, KVM, Xen,目标是创建完整的虚拟机。为了运行应用,除了部署应用本身及其依赖(通常几十 MB),还得安装整个操作系统(几十 GB)。 下图展示了二者的区别。 如图所示,由于所有的容器共享同一个 Host OS,这使得容器在体积上要比虚拟机小很多。另外,启动容器不需要启动整个操作系统,所以容器部署和启动速度更快,开销更小,也更容易迁移。 Why - 为什么需要容器? 为什么需要容器?容器到底解决的是什么问题? 简要的答案是: 容器使软件具备了超强的可移植能力 。 Docker 将集装箱思想运用到软件打包上,为代码提供了一个基于容器的标准化运输系统。Docker 可以将任何应用及其依赖打包成一个轻量级、可移植、自包含的容器。容器可以运行在几乎所有的操作系统上

容器 What, Why, How

冷暖自知 提交于 2020-02-04 10:27:32
学习任何东西都可以按照3W的框架进行,容器技术也是一样,先回答 What、Why 和 How 这三个问题。 What - 什么是容器? 容器是一种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运行。开发人员在自己笔记本上创建并测试好的容器,无需任何修改就能够在生产系统的虚拟机、物理服务器或公有云主机上运行。 容器与虚拟机 谈到容器,就不得不将它与虚拟机进行对比,因为两者都是为应用提供封装和隔离。 容器由两部分组成: 应用程序本身 依赖:比如应用程序需要的库或其他软件 容器在 Host 操作系统的用户空间中运行,与操作系统的其他进程隔离。这一点显著区别于的虚拟机。 传统的虚拟化技术,比如 VMWare, KVM, Xen,目标是创建完整的虚拟机。为了运行应用,除了部署应用本身及其依赖(通常几十 MB),还得安装整个操作系统(几十 GB)。 下图展示了二者的区别。 如图所示,由于所有的容器共享同一个 Host OS,这使得容器在体积上要比虚拟机小很多。另外,启动容器不需要启动整个操作系统,所以容器部署和启动速度更快,开销更小,也更容易迁移。 Why - 为什么需要容器? 为什么需要容器?容器到底解决的是什么问题? 简要的答案是: 容器使软件具备了超强的可移植能力 。 容器解决的问题 我们来看看今天的软件开发面临着怎样的挑战?