容器技术

Docker从入门到实践(1)

我的梦境 提交于 2019-12-05 04:31:00
一、Docker简介 1.1、什么是 Docker   Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新,并于 2013 年 3 月以 Apache 2.0 授权协议开源 ,主要项目代码在 GitHub 上进行维护。 Docker 项目后来还加入了 Linux 基金会,并成立推动 开放容器联盟(OCI) 。   Docker 自开源后受到广泛的关注和讨论,至今其 GitHub 项目 已经超过 5 万 4 千个星标和一万多个 fork 。甚至由于 Docker 项目的火爆,在 2013 年底, dotCloud 公司决定改名为 Docker 。 Docker 最初是在 Ubuntu 12.04 上开发实现的; Red Hat 则从 RHEL 6.5 开始对 Docker 进行支持; Google 也在其 PaaS 产品中广泛应用 Docker 。   Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup , namespace ,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术 。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于

docker--docker介绍

醉酒当歌 提交于 2019-12-05 04:26:00
2 docker 介绍 2.1 容器技术 在计算机的世界中,容器拥有一段漫长且传奇的历史。容器与管理程序虚拟化 (hypervisor virtualization,HV)有所不同,管理程序虚拟化通过中间层将一台或者多 台独立的机器虚拟运行与物理硬件之上,而容器则是直接运行在操作系统内核之上的用 户空间。因此,容器虚拟化也被称为“操作系统级虚拟化”,容器技术可以让多个独立的用 户空间运行在同一台宿主机上。 由于 “客居”于操作系统,容器只能运行与底层宿主机相同或者相似的操作系统,这看起来 并不是非常灵活。例如:可以在Ubuntu服务中运行Redhat Enterprise Linux,但无法再 Ubuntu服务器上运行Microsoft Windows。 相对于彻底隔离的管理程序虚拟化,容器被认为是不安全的。而反对这一观点的人则认 为,由于虚拟容器所虚拟的是一个完整的操作系统,这无疑增大了攻击范围,而且还要 考虑管理程序层潜在的暴露风险。 尽管有诸多局限性,容器还是被广泛部署于各种各样的应用场合。在超大规模的多租户 服务部署、轻量级沙盒以及对安全要求不太高的隔离环境中,容器技术非常流行。最常 见的一个例子就是“权限隔离监牢”(chroot jail),它创建一个隔离的目录环境来运行进 程。如果权限隔离监牢正在运行的进程被入侵者攻破,入侵者便会发现自己“身陷囹圄”,

开源的自动化部署工具探索

落花浮王杯 提交于 2019-12-05 04:11:56
1 前言 即使是在传统的企业当中,日常的备份、服务器状态监控和日志,通过手动的方式来进行的效率也很低,是一种人力的浪费。因此,自动化早已是每个运维都必须掌握的看家本领。 在不同的企业中,自动化的规模、需求与实现方式都各不相同,因此在技术细节层面,运维之间很难将别的企业的方法整个套用过来。然而在很多情况下,自动化的思路是有共通之处的。 运维自动化前三阶段 ◆纯手工阶段:手工操作重复地进行软件部署和运维。 ◆脚本阶段:通过编写脚本、方便地进行软件部署和运维。 ◆工具阶段:借助第三方工具高效、方便地进行软件部署和运维。 这几个阶段是随着运维知识、经验、教训不断积累而不断演进的。而且,第2个阶段和第3个阶段可以说是齐头并进,Linux下的第三方工具虽说已经不少了,但是Linux下的脚本编写对运维工作的促进作用是绝对不可以忽视的。 在DevOps出现之前,运维工作者在工作中还是以这两种方式为主。 下面的研究,都是一些linux下开源的第三方工具,借助第三方工具高效、方便地进行软件部署和运维。 2 业界开源的自动化部署工具 2.1 chef Chef 是一款自动化服务器配置管理工具,可以对所管理的对象实行自动化配置,如系统管理,安装软件,基于ruby语言编写的。 2.1.1 Chef的架构 2.1.2 Chef的工作原理: Chef 由三大组件组成:Chef Server、Chef

Kubernetes SDN

孤街醉人 提交于 2019-12-05 03:57:13
转载自:https://www.cnblogs.com/nongchaoer/p/6792756.html 首先,向大家科普下Kubernetes所选择的CNI网络接口,简单介绍下网络实现的背景。 CNI即Container Network Interface,是一套容器网络的定义规范,包括方法规范、参数规范、响应规范等等。CNI只要求在容器创建时为容器分配网络资源、删除容器时释放网络资源。CNI与调用者之间的整个交互过程如下图所示: CNI实现与外界的交互都通过进程参数和环境变量传递,也只要求输出结果符合CNI规范即可,与实现语言也没什么特殊要求。比如Calico早期版本就使用Python实现了CNI规范,为Kubernetes提供了网络实现。常见的环境变量设置如下: CNI_COMMAND:调用指定CNI动作,ADD表示增加网卡,DEL表示释放网卡 CNI_CONTAINERID:容器ID CNI_NETNS:容器网络命名空间文件位置 CNI_ARGS:额外传递的参数 CNI_IFNAME:设置的容器网卡名称,如eth0 正因如此,CNI规范实现起来非常容易扩展,除了CNI自带的Bridge、Macvlan等基本实现以外,还有大量的第三方实现可供选择,包括Calico、Romana、Flannel等常用实现。同时CNI支持多种容器运行时,包括Docker、rkt、Mesos

【架构-01】转载:微服务架构

半世苍凉 提交于 2019-12-05 03:17:30
纯洁的微笑公众号文章:【12张手绘图】我搞懂了微服务架构! 什么是微服务? 微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分成一组小的服务,每个服务运行独立的自己的进程中,服务之间互相协调、互相配合,为用户提供最终价值。 服务之间采用轻量级的通信机制互相沟通(通常是基于 HTTP 的 RESTful API ) 。 每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。 另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建,可以有一个非常轻量级的集中式管理来协调这些服务。 可以使用不同的语言来编写服务,也可以使用不同的数据存储。 根据马丁.福勒的描述,我总结了以下几点: ①小服务 小服务,没有特定的标准或者规范,但他在总体规范上一定是小的。 ②进程独立 每一组服务都是独立运行的,可能我这个服务运行在 Tomcat 容器,而另一个服务运行在 Jetty 上。可以通过进程方式,不断的横向扩展整个服务。 ③通信 过去的协议都是很重的,就像 ESB,就像 SOAP,轻通信,这意味着相比过去更智能更轻量的服务相互调用,就所谓 smart endpoints and dumb pipes。 这些 Endpoint 都是解耦的,完成一个业务通信调用串起这些 Micro Service

杂记2

假装没事ソ 提交于 2019-12-05 02:35:42
1.ApplicationContext和ApplicationContextAware 首先我需要了解Spring容器。 众所周知,Spring-framework使用了控制反转技术让容器来负责对象的生命周期(创建、装配、销毁)。 基础的容器时BeanFactory,在Spring-framework中,所有的组件都被视为bean,包括数据源,Hibernate的SessionFactory、事务管理器等。BeanFactory则负责bean实例的生成。 ApplicationContext继承了BeanFactory,除了实现它的基础功能外,还可以进行解析配置文本信息等功能,它也是最常用的容器 ApplicationContextAware,可以用来获取ApplicationContext 来源: https://www.cnblogs.com/bestefforts/p/11898419.html

容器上使用Docker还是Rocket?为什么不一起用呢?

百般思念 提交于 2019-12-05 02:30:56
在2014年接近尾声时,CoreOS在Docker发布了Rocket,声称Docker的流程模型有着“根本性的缺陷”。虽然CoreOS的创始人Alex Polvi尽量缓和语气,但是他坚持自己的基本观点,Docker不再是构建系统的最佳组件。 容器技术最近异军突起,所以很容易看出为什么Polvi这么积极地跑马圈地。因为容器之争才刚刚开始,不过,更严重的问题是供应商之间这样来回的争吵是否会吓跑那些想要采用容器技术的企业,至少让他们等到争论尘埃落定时。 平台 vs. 组件 CoreOS的Plovi和Docker的创始人Solomon Hykes在一点上有着共识:Rocket和Docker实际上不是竞争关系。Hykes说,Rocket“实际上是libcontainer的竞争对手”,而不是整体Docker平台的竞争对手。Libcontainer,是“为容器制定配置选项”的库,它对于Docker至关重要,它也是社区的努力结果,能帮助定义容器的未来。 正如InforWorld的Serdar Yegulap所写,Libcontainer非常重要。 但是Plovi显然觉得Docker忽略了它自己的核心愿望而想去做更多 – 成为平台。 Polvi 说: "Docker一开始是用来构建平台的组件。一个构建模块。一个可以集成到现有系统使其可以使用容器的东西。这是Docker的最初价值

拐点已至,云原生引领数字化转型升级

百般思念 提交于 2019-12-05 02:30:55
作者 | 易立 阿里云资深技术专家 本文整理自易立在 2019 携程技术峰会上发表的题目为《拐点已至,云原生引领数字化转型升级》的演讲。 关注“阿里巴巴云原生”公众号,回复关键词“转型”即可下载本文 PPT。 今天我跟大家分享的题目是“拐点已至,云原生引领数字化转型升级”。先做个简单的自我介绍,我叫易立,来自于阿里云容器平台,从 2015 年开始负责阿里云容器产品,之前在 IBM 工作 14 年,主要负责企业中间件和云计算的产品研发。 今天会跟大家分享我们对云原生领域的简单思考,以及我们对云原生发展四个趋势大概的介绍: 拥抱 Serverless – 极致弹性,无需运维; 服务网格 – 将服务治理能力与应用解耦,并下沉到基础设施层; 云原生应用管理标准化 – 构建高效、自动化和可信赖的应用交付体系; 计算无边界 – 实现云-边缘-IoT 设备的高效协同。 云原生基本概念 先简单介绍云原生一些基本的概念。 我们接触了很多的客户,对于这些客户而言,上不上云已经不是问题,他们关注的是该怎么上云?该如何充分利用云的能力、最大化云的价值?在 All in Cloud 的时代,企业的技术能力已经成为核心竞争力,他们非常愿意用云作为企业 IT 能力的增效器。 云原生计算是一组最佳实践和方法论,在公共云、专有云环境中,构建可伸缩、健壮、松耦合的应用,可以更加快速地创新和低成本试错;容器、服务网格

Docker 面试题(一)

戏子无情 提交于 2019-12-05 02:08:06
什么是Docker? Docker是一个容器化平台,它以容器的形式将您的应用程序及其所有依赖项打包在一起,以确保您的应用程序在任何环境中无缝运行。 CI(持续集成)服务器的功能是什么? CI功能就是在每次提交之后不断地集成所有提交到存储库的代码,并编译检查错误 什么是Docker镜像? Docker镜像是Docker容器的源代码,Docker镜像用于创建容器。使用build命令创建镜像 什么是Docker容器? Docker容器包括应用程序及其所有依赖项,作为操作系统的独立进程运行 Docker容器有几种状态? Docker容器可以有四种状态: 运行 已暂停 重新启动 已退出 Docker使用流程 1)创建Dockerfile后,您可以构建它以创建容器的镜像 2)推送或拉取镜像。 Dockerfile中最常见的指令是什么?​​​​​​​ Dockerfile中的一些常用指令如下: FROM:指定基础镜像 LABEL:功能是为镜像指定标签 RUN:运行指定的命令 CMD:容器启动时要运行的命令 Dockerfile中的命令COPY和ADD命令有什么区别? COPY与ADD的区别COPY的<src>只能是本地文件,其他用法一致 docker常用命令? docker pull 拉取或者更新指定镜像 docker push 将镜像推送至远程仓库 docker rm 删除容器 docker

Docker-----四种网络模式

﹥>﹥吖頭↗ 提交于 2019-12-05 00:41:42
我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式: · host模式,使用--net=host指定。 · container模式,使用--net=container:NAME_or_ID指定。 · none模式,使用--net=none指定。 · bridge模式,使用--net=bridge指定,默认设置。 1 host模式 Docker使用的网络实际上和宿主机一样,在容器内看到的网卡ip是宿主机上的ip。 众所周知,Docker使用了Linux的Namespaces技术来进行资源隔离,如PID Namespace隔离进程,Mount Namespace隔离文件系统,Network Namespace隔离网络等。一个Network Namespace提供了一份独立的网络环境,包括网卡、路由、Iptable规则等都与其他的Network Namespace隔离。一个Docker容器一般会分配一个独立的Network Namespace。但如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。 2 container模式