容器技术

Container Networking(From Docker to Kubernetes)中文版

匿名 (未验证) 提交于 2019-12-03 00:18:01
前言 1. 本书的写作动机 1.1 “宠物模式” vs “牲畜模式” 1.2 Go Cattle! 1.3 容器网络技术栈 1.4 我需要全盘押注容器吗? 2. 容器网络初步 2.1 单主机容器网络101 2.2 Docker网络模型 2.3 网络管理考量 2.4 本章小结 3. 跨主机网络 3.1 多主机容器网络101 3.2 多主机容器网络的选择 3.3 Docker网络 3.4 网络管理考量 3.5 本章小结 4. 编排 4.1 scheduler实际上是做什么的? 4.2 Docker 4.3 Apache Mesos 4.4 Hashicorp Nomad 4.5 社区很重要! 4.6 本章小结 5. 服务发现 5.1 挑战 5.2 技术 5.3 负载均衡 5.4 本章小结 6. CNI(容器网络接口) 6.1 历史 6.2 规范和使用 6.3 容器运行时和插件 6.4 本章小结 7. Kubernetes网络 7.1 Kubernetes简介 7.2 Kubernetes网络概述 7.3 Pod内网络 7.4 Pod间网络 7.5 Kubernetes中的服务发现 7.6 Ingress与Egress 7.7 Kubernetes 中网络的高级主题 7.8 本章小结 附录 可以通过 GitBook 或者 Github 来在线阅读。 文章来源: Container

Spring源码系列:Spring的启动过程 ・ glmapper

匿名 (未验证) 提交于 2019-12-03 00:15:02
Spring对于程序员说来说都不陌生;作为一个强大的开源技术,帮助我们能够更好的进行项目的开发与维护。 直接进入主题吧。Spring的启动过程实际上就是Ioc容器初始化以及载入Bean的过程;本文主要是学习记录下前半部分(Ioc容器的初始化),新手上路,如有错误,请指正! 1.从配置文件说起 12345678 <listener> <listener-class>org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> 在一般的WEB项目中,项目的启动一般是从web.xml文件的载入开始的。如果我们的项目中使用了Spring,那么你肯定会在你的web.xml文件中看到上面的配置。Spring正是通过ContextLoaderListener监听器来进行容器初始化的。下面通过代码进行分析。 2.Spring容器加载的三步走 step1:创建一个WebApplicationContext step2

Docker之NameSpace与Cgroup

匿名 (未验证) 提交于 2019-12-03 00:14:01
Docker容器技术是一个与传统的虚拟化技术有些本质上的差别,传统的虚拟化技术,是站硬件物理资源的基础上,虚拟出多个OS,然后在OS的基础上构建相对独立的程序运行环境,而Docker则是在OS的基础上进行虚拟,所以,Docker轻量很多,因此其资源占用、性能消耗相比传统虚拟化都有很大的优势。 docker容器很快,启动和停止可以在秒级实现,比传统的虚拟化技术要快很多,docker核心解决的问题是利用容器来实现类似VM的功能,从而节省更多的硬件资源,docker容器除了运行其中的应用之外,基本不消耗额外的系统资源,从而在保证性能的同时,减小系统开销,同时,它还可以达到“一次封装,到处运行”的目的。 Docker和传统虚拟化的区别如下: docker和传统虚拟化的架构上的区别如下: 二、NameSpace和Cgroup的概念与作用 Docker中有三个核心概念,分别是镜像、容器、仓库。而镜像的概念主要就是把运行环境和业务代码进行镜像打包,每个镜像都会存在多个“层”,镜像层都是只读的,不能往里写数据,如果想要写,就需要在其基础之上启动成一个容器, 在容器层,我们是可写的。 在镜像的多个“层”中,有一个busybox的概念,我将它理解为欺骗层。 虚拟化的技术就是来解决宿主机与虚拟机之间的耦合问题(简称“解耦”),传统虚拟化是属于完全解耦的,而docker是属于半解耦的。关于“耦合、解耦

Spring中ioc的实现原理

匿名 (未验证) 提交于 2019-12-03 00:13:02
一、IoC是什么 Ioc―Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。 在Java开发中, Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。 如何理解好Ioc呢?理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,那我们来深入分析一下:   ● 谁控制谁,控制什么: 传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对 象的创建; 谁控制谁?当然是IoC 容器控制了对象;控制什么?那就是主要控制了外部资源获取(不只是对象包括比如文件等)。   ● 为何是反转,哪些方面反转了: 有反转就有正转,传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转;而反转则是由容器来帮忙创建及注入依赖对象;为何是反转? 因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转;哪些方面反转了?依赖对象的获取被反转了。 IoC和DI    DI―Dependency Injection,即“依赖注入” : 组件之间依赖关系 由容器在运行期决定,形象的说,即 由容器动态的将某个依赖关系注入到组件之中 。

Docker容器组件

匿名 (未验证) 提交于 2019-12-03 00:11:01
从Docker1.11版本开始,Docker容器运行已经不是简单的通过Docker daemon守护进程来启动,而是集成了containerd、containerd-shim、runC等多个组件。docker服务启动之后,系统上通过命令可以查看到dockerd、docker-containerd等进程。 Docker容器组件介绍 Docker CLI(docker) docker程序是一个客户端工具,用来把用户的请求发送给docker daemon(dockerd)。 Docker d dockerd作为docker容器管理的守护进程(docker daemon),守护进程负责和docker client交互,并管理docker镜像和容器;一般也会被称为docker engine。 Containerd containerd是容器技术标准化之后的产物,为了能够兼容OCI标准,将容器运行时及其管理功能从docker daemon剥离。理论上,即使不运行dockerd,也能够直接通过containerd来管理容器。 Containerd -shim 它是containerd的组件,是容器的运行时载体,在容器的主机上通过命令可以查看到每个docker容器所对应的 containerd -shim。 RunC runC进程是作为containerd-shim的子进程存在的

k8s读书笔记 k8s入门

匿名 (未验证) 提交于 2019-12-03 00:08:02
k8s是什么 功能上:容器编排引擎的事实标准。《每天五分钟玩转kubernetes》 Kubernetes is a portable, extensible, open-source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. It has a large, rapidly growing ecosystem. Kubernetes services, support, and tools are widely available.《 https://kubernetes.io/ 》 架构上:它是一个全新的基于容器技术的分布式架构领先方案。《k8s权威指南》 一些概念: 几乎所有的资源对象都可以通过kubectl命令进行增删改查等操作并将其保存在etcd存储中进行永久化存储 集群中的角色: Node:工作负载节点,kubelet:负责容器的创建 和Master的交互;kube-proxy:实现service的通信和负载均衡机制的组件;docker:docker引擎 Master:控制节点;高可用方案建议用3个节点;部署的进程:kube-api-server,集群控制入口

易筋SpringBoot 2.1 | 第廿三篇:SpringBoot之Docker安装MongoDB

匿名 (未验证) 提交于 2019-12-03 00:06:01
写作时间:2019-09-15 Spring Boot: 2.1 ,JDK: 1.8, IDE: IntelliJ IDEA 什么是 Docker Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新,并于 2013 年 3 月以 Apache 2.0 授权协议开源 ,主要项目代码在 GitHub 上进行维护。Docker 项目后来还加入了 Linux 基金会,并成立推动 开放容器联盟(OCI) 。 Docker 自开源后受到广泛的关注和讨论,至今其 GitHub 项目 已经超过 5 万 多个星标和一万多个 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 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术

3.docker镜像管理基础

≡放荡痞女 提交于 2019-12-03 00:04:48
一、docker镜像相关 1、About Docker Image Docker镜像含有启动容器所需要的文件系统及其内容,因此,其用于创建并启动docker容器。 采用分层构建机制,最底层为bootfs,其之为rootfs. bootfs:用于系统引导的文件系统,包括BootLoader和Kernel,容器启动完成后会被卸载以节约内存资源; rootfs:位于bootfs之上,表现为docker容器的根文件系统。 传统模式中,系统启动之时,内核挂载rootfs时会首先将其挂载为“只读”模式,完整性自检完成后重新挂载为读写模式; Docker中,rootfs由内核挂载为“只读”模式,而后通过“联合挂载”技术额外挂载一个“可写”层。 2、Docker Image Layer 位于下层的镜像称为父镜像(parent image),最底层的称为基础镜像(base image) 最上层为“可读写”层,其下的均为“只读”层。 容器启动时,必须按照层次加载,首先挂载bootfs,系统启动之后,从内存中删除bootfs,挂载rootfs,其次依次挂载上面的image层,每个应用都是一个层,这下面的所有层都是只读的。而后,在最上层挂载一个可写层。(对于一个容器来说,它的写操作都只能在这个可写层来实现)。他们是叠加在一起挂载的,所以称之为联合挂载。当一个容器销毁时(执行docker container

docker学习-docker容器运行

匿名 (未验证) 提交于 2019-12-03 00:03:02
docker run是启动容器的方法,可以用三种指定的方式指定容器启动时执行的命令。 (1)CMD指令 (2)ENTRYPOINT指令 (3)在docker run中命令行中指定 但是docker run并不能长期保持running状态,我们经常需要进入到容器中去做一些工作,比如查看日志、调试、启动其他进程等。有两种进入容器的方式:attach和exec。 docker attach 首先启动一个容器,保持后台长期运行 docker run - d ubuntu / bin / bash - c "while true; do sleep 1; echo i_am_a_container;done 首先检查容器的ID docker ps - a CONTAINER ID就是容器的编号,其实就是容器ID前12个字符,又叫短ID IMAGE就是base IMAGE NAMES是容器的名称,在启动容器的时候可以通过 --name参数显式的为容器命名。 通过docker attach可以attach到容器启动命令的终端。 docker attach 1e5cc7e3b22b 通过短ID attach到了容器的启动命令终端,之后看到的是echo每秒输出一次打印信息 可以通过ctl+p,然后ctl+q退出attach终端 docker exec 通过docker exec进入相同的容器

Docker吐血总结

匿名 (未验证) 提交于 2019-12-03 00:02:01
安装啥的我就不说了 自己百度就行,本人是mac一路傻瓜安装。 docker与vm相比的优势: 1 启动快,秒级别 vm为分钟级 2 需要资源少,是轻量级的,docker容器直接与内核进行交互 vm则是通过Hypervisor(VMM)与内核进行交互 docker是MB级别 vm为GB级别 3 能创建上千个容器,vm只能创建几十个 4 高可用性 --通过docker的快速部署实现高可用 5 节约时间 --开发、测试、部署的时间都大大减少 6 DockerFile中记录容器的构建过程,可在集群中实现快速分发和快速部署 一、docker运行机制包括的三个核心组件:docker CLI、REST API和docker daemon(守护进程) 二、docker的架构主要包括三部分:Client(客户端)、DOCKER_HOST(docker主机,主要指docker daemon守护进程)和Register(注册中心,实质就是docker镜像仓库) 三、docker的底层技术(了解):Namespaces(名称空间,可以隔离容器)、Control groups(控制组,可以控制资源)、Union file systems(联合文件系统)、Container format(容器格式) 四、Dockerfile:一般分为四个部分-基础镜像信息、维护者信息、镜像操作指令和容器启动时的执行指令