容器

[ZZ] C++ stack/queue

萝らか妹 提交于 2020-01-30 00:38:25
STL--stack/queue的使用方法 2010-01-05 17:36 stack(栈)和queue(队列)也是在程序设计中经常会用到的数据容器,STL为我们提供了方便的stack(栈)的queue(队列)的实现。 准确地说,STL中的stack和queue不同于vector、list等容器,而是对这些容器的重新包装。这里我们不去深入讨论STL的stack和queue的实现细节,而是来了解一些他们的基本使用。 1、stack stack模板类的定义在<stack>头文件中。 stack模板类需要两个模板参数,一个是元素类型,一个容器类型,但只有元素类型是必要的,在不指定容器类型时,默认的容器类型为deque。 定义stack对象的示例代码如下: stack<int> s1; stack<string> s2; stack的基本操作有: 入栈,如例:s.push(x); 出栈,如例:s.pop();注意,出栈操作只是删除栈顶元素,并不返回该元素。 访问栈顶,如例:s.top() 判断栈空,如例:s.empty(),当栈空时,返回true。 访问栈中的元素个数,如例:s.size() 2、queue queue模板类的定义在<queue>头文件中。 与stack模板类很相似,queue模板类也需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的

docker基础(一)

北慕城南 提交于 2020-01-30 00:13:00
1. Docker是什么 Docker是一个开源的应用客器引擎,基于GO语言开发实现,属于操作系统层面的虚拟化技术。 Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何安装有 Docker的电脑( windows和 Linux)上。 容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iphone和app),更重要的是容器性能开销极低。 2. Docker能够做什么 Docker可以解决虚拟机能够解决的问题,同时也能够解决虚拟机由于电脑资源要求过高而无法解决的问题。 虚拟机和 Docker虚拟化的不同之处 3. 为什么使用 Docker 1)更快速的交付和部署 对开发和运维员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。 例如:开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。 Docker容器很轻很快!容器的启动时间是秒级的,大量地节约开发、测试、部署 的时间. 节约安装各种开发环境的软件的时间。 解决开发环境和生产环境不一致的问题 2)更轻松的迁移和扩展: Docker容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个 3)更高的资源利用率

K8s

穿精又带淫゛_ 提交于 2020-01-29 23:46:56
K8s: 开源的容器集中管理系统,使用go语言开发,用于管理云平台中多个主机上的容器化应用 Kubernetes 特性: K8s的目标是让部署容器化的应用简单并且高效提供了资源调度、部署管理、服务发现、扩容缩容、监控,维护等一整套功能。成为跨主机集群的自动部署、扩展以及运行应用程序容器的平台。 1.自我修复 2.弹性伸缩 3.自动部署和回滚 4.服务发现和负载均衡 5.机密和配置管理 6.存储编排 7.批量处理 Kubernetes集群构架与组件: K8s属于主从分布式架构,主要由master和worker node组成,包括客户端命令行工具kubectl和其它附加项。 Master作为控制节点,对集群进行统一的调度和管理,增删改查。 Worker Node:作为真正的工作节点,运行业务应用的容器,node由master管理,node负责监控并汇报容器的状态。 kubectl:客户端工机具,用于通过命令行与API Server进行交互,对Kubernetes集群进行操作,实现在集群中进行各种资源的增删改查等操作。 Kubernetes 组件介绍: Master组件:集群控制管理节点,负责管理集群,所有的命令都经由master处理,拥有Etcd存储服务,运行Api Server进程,Controller Manager服务进程及Scheduler服务进程,关联工作节点Node。

Docker容器常用命令

拈花ヽ惹草 提交于 2020-01-29 18:13:32
#新建并启动容器 docker run 【OPTIONS】 IMAGE 【COMMAND】 【ARG...】 OPTIONS说明: --name="容器名称" :为容器指定一个名称 -d:后台运行容器并返回容器ID,也即启动守护容器 -i:以交互模式运行容器,通常与-t同时使用 -t:为容器重新分配一个伪输入终端,通常与-i同时使用 -P:随机端口映射 -p:指定端口映射,有以下四种格式   ip:hostPort:containerPort   ip::containerPort   hostPort:containerPort   containerPort #列出容器中所有的进程 docker ps 【OPTIONS】 OPTIONS说明: -a:列出当前所有正在运行的容器+历史上运行过的容器 -l:显示上一次创建的容器 -n:显示最近n个创建的容器 (-n后边加数字) -q:静默模式,只显示容器编号 --no-trunc:不截断输出 #退出容器   exit  容器停止退出   ctrl+P+Q 容器不停止退出 #启动容器 docker start 容器ID或者容器名 #停止容器 docker stop 容器ID或者容器名 #重启容器 docker restart 容器ID或者容器名 #强制停止容器 docker kill 容器ID或者容器名 相当于拔电源

Docker容器化部署Python应用

纵饮孤独 提交于 2020-01-29 04:59:10
1. 简介 Docker 是目前主流IT公司广泛接受和使用的,用于构建、管理和保护它们应用程序的工具。 容器,例如Docker允许开发人员在单个操作系统上隔离和运行多个应用程序,而不是为服务器上的每个应用程序专用一个虚拟机。使用容器更轻量级,可以降低成本、更好地使用资源和发挥更高的性能。 本文将使用Flask开发一个简单的Python web应用程序,并为“容器化”做好准备。然后创建一个Docker映像,并将其部署到测试和生产环境中。 注意: 请确保机器上已安装Docker,如果没有请参考 Docker官方安装教程 。 2. Docker介绍 Docker是一种工具,它使开发人员能够交付他们的应用程序(以及库或其他依赖项),确保他们可以使用正确的配置运行,而不受部署环境影响。 这是通过将应用程序隔离在单独的容器中来实现的,这些应用程序虽然被容器分隔开,但是却可以共享操作系统和其他资源。 Docker包含两部分: Docker Engine — 应用打包工具,用于封装应用程序。 Docker Hub — 用于管理云上容器应用程序的工具。 3.为何选择容器 了解容器的重要性和实用性非常重要,虽然它和直接将应用部署到服务器没有多大区别,但是当涉及到比较复杂的且相当吃资源的应用,尤其是多个应用部署在同一台服务器,或是同一应用要部署到多台服务器时。容器就变得非常有用。 在容器之前,这是通过

docker之容器数据持久化

 ̄綄美尐妖づ 提交于 2020-01-29 03:52:17
1.挂载本地目录为容器的数据存放目录 [root@node03 ~]# docker run -itd --name web01 -v /container_data/web:/data ubuntu [root@node03 ~]# docker inspect web01 2.到挂载的目录下面创建一个文件 [root@node03 ~]# cd /container_data/web/ [root@node03 web]# ls [root@node03 web]# touch test.index 3、查看web01容器下面的data目录是否存在刚才创建的文件 [root@node03 ~]# docker exec web01 ls /data 4、在创建一个web02 的容器,也挂载相同的目录,看看刚才的文件是否还存在 [root@node03 ~]# docker run -itd --name web02 -v /container_data/web:/data ubuntu 二、 容器 数据卷 创建一个dvdata的数据卷容器: [root@node03 ~]# docker run -itd -v /data --name dvdata ubuntu 注:/data是数据卷容器内共享的目录 在其他容器中挂载dvdata容器的数据卷: [root@node03 ~]

Docker系列(五):.Net Core实现k8s健康探测机制

白昼怎懂夜的黑 提交于 2020-01-29 00:50:03
k8s通过liveness来探测微服务的存活性,判断什么时候该重启容器实现自愈。比如访问 Web 服务器时显示 500 内部错误,可能是系统超载,也可能是资源死锁,此时 httpd 进程并没有异常退出,在这种情况下重启容器可能是最直接最有效的解决方案。 k8s通过readiness来探测微服务的什么时候准备就绪(例如初始化时,连接数据库,加载缓存数据等等,可能需要一段时间),然后将容器加入到server的负载均衡池中,对外提供服务。 k8s默认健康检查机制: 每个容器启动时都会执行一个进程,此进程由 Dockerfile 的 CMD 或 ENTRYPOINT 指定。如果进程退出时返回码非零,则认为容器发生故障,Kubernetes 就会根据 restartPolicy 重启容器。如果不特意配置,Kubernetes 将对两种探测采取相同的默认行为。 OK,那我们就来实现一下,新建.Net Core Api项目 k8s-healthcheck,新增Heathchecks控制器: [Route("/api/v1/heathchecks")] public class HeathchecksController : Controller { private readonly static DateTime _beginUtc = DateTime.Now; [HttpGet]

记一次为镜像添加SSH服务引发的问题

纵然是瞬间 提交于 2020-01-28 19:48:08
2020年1月28日下午风和日丽没有太阳,我启动了一个ubuntu容器按书上所写给他配置更新源。 发现没有vi命令,直接使用echo导入源到/etc/apt/sources.list文件中 echo "deb http://cn.archive.ubuntu.com/ubuntu/ xenial main restricted universe multiverse" > /etc/apt/sources.list echo "deb http://cn.archive.ubuntu.com/ubuntu/ xenial-security main restricted universe multiverse" >> /etc/apt/sources.list echo "deb http://cn.archive.ubuntu.com/ubuntu/ xenial-updates main restricted universe multiverse" >> /etc/apt/sources.list echo "deb http://cn.archive.ubuntu.com/ubuntu/ xenial-backports main restricted universe multiverse" >> /etc/apt/sources.list 然后把sources

魔法方法:定制序列+习题复习

谁说我不能喝 提交于 2020-01-28 17:30:23
##协议是什么? (常言道:“无规矩不成方圆”,讲的是万事万物的发展都要在一定的规则下去运行,只有遵循一定的协议去做,事情才能够往正确的道路去发展。我们今天要谈的是 定制容器,想要成功的实现容器的定制,我们要先谈一谈协议,那么什么是协议呢?协议是个什么东西呢) ※协议(Protocols)与其他编程语言中的 接口 很相似,它规定你哪些方法必须要定义。然而,在Python中的协议就显得不那么正式。事实上,在Python中,协议更像是一种指南。 ※就像之前提到的鸭子类型(DuckTyping):当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。忘记了可以回去看看鸭子类型 Python的鸭子类型(duck typing) ※ Python就是这样,它并不会严格要求你一定要怎样去做,而是靠你自觉和经验去把事情做得更好。 ##容器类型的协议 (在Python中,像序列类型,例如:列表,元组,字符串这些,或者说映射类型(例如:字典)都是属于容器类型,它们都是里面存放各式各样的对象。所以他们称为容器) ※如果说你希望定制的容器是不可变(例如元组、字符串)的话,你只需要定义__len__()和__getitem__()这两个魔法方法。 ※如果你希望定制的容器是可变的话,除了__len__()和__getitem__()方法,你还需要定义__setitem__(

Spring整合junit测试

百般思念 提交于 2020-01-28 15:16:44
本节内容: Spring整合junit测试的意义 Spring整合junit测试 一、Spring与整合junit测试的意义 在没整合junit之前,我们在写测试方法时,需要在每个方法中手动创建容器,获取对象,比如下面的代码,红色部分都是重复的代码。如果要测试很多功能的话,每次都得手动去创建容器,很麻烦。如果你测试的两个功能中用到某个相同的对象,获取对象的代码也得写一遍。 public class test { @Test public void test1(){ //1.创建容器对象(创建Spring的工厂类) ApplicationContext ac = new ClassPathXmlApplicationContext("com/wisedu/annotation/applicationContext.xml"); //ClassPathXmlApplicationContext(从类路径下加载xml的Application容器)是org.springframework.context.ApplicationContext的实现类 //2.向容器"要"User对象(通过工厂解析XML获取Bean实例) User user = (User)ac.getBean("user"); //3.打印User对象 System.out.print(user); } @Test