| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> Devops导论学习笔记(中) -> 正文阅读 |
|
[系统运维]Devops导论学习笔记(中) |
容器技术基础容器其实就是操作系统当中的一个进程。DockerEngine本质上也是个进程,它和虚拟化技术最大的不同在于它复用了host操作系统。 Docker主要包括两方面技术: 1、和运行态(容器)技术相关的:可以有效分配物理资源,通过cgroup来实现。可以实现资源的隔离,需要用到namespace(比如进程空间、网络空间)。 2、镜像:将软件制品及其对操作系统的依赖整个打包成镜像。从系统环境开始自下而上打包应用。同样的镜像在不同的环境,其表现是一致的,因为它打包了所有的依赖。 进程隔离:os中有一颗进程树,里面会包含根进程及其fork出来的子进程。当容器启动时,通过namespace进行隔离后,它看到自己就是个根进程,pid为1,但其实在os中,该进程pid不为1. 要运行docker应用时,都必须首先安装docker engine。它是一个典型的C/S模式的应用。服务端为docker daemon,客户端直接通过curl调用REST API,比如docker login,docker ps等等。同时对REST API做了一层封装,称为docker CLI,即command line man tool。docker daemon会对network、container、image、volumes进行管理。用户可以通过docker run来运行容器、可以通过docker ps 来查看。背后都是使用REST API和CLI和docker daemon进行交互,docker daemon相当于守护进程。 ? ?from:拉的基础镜像? ? copy:将文件拷贝到自己的进程? run:要执行的命令? cmd:镜像变成容器启动时执行的命令? ?label:指定工作目录 通过四条命令会生成四个layer,镜像变成容器启动时又会变出两个layer。所有在容器的写操作都是在读写层操作。同时容器也允许将主机上的文件系统mount到容器里。 docker网络模式之bridge模式,docker daemon会创建出一个网桥,容器内部有自己网络空间,通过网桥和主机网络空间进行交互,容器内部有自己的ip。? docker网络模式之host模式。容器内的网络空间共享了host的网络空间,不通过bridge。容器的ip就是主机的ip,容器的端口就是主机的端口。 ? ?docker网络模式之container网络模式。A容器有自己的网络空间,B容器共享A的网络空间。B容器的所有流量都是通过A容器的网络和外部进行交互,不会有独立的网络空间。 none模式没有任何网络,无法进行配置,通常用于特殊场景。 容器会使用一些特殊的文件系统,除了主机的诸如ext文件格式外,需要另外的文件格式,如AUFS等。对不同的驱动,适用于不同的场景。图中给出了不同存储驱动的特点。 ?构建步骤: 1、写一个docker file 2、执行docker build 命令 3、通过docker run运行。 还可以通过运行一些其他命令。。。 容器编排与调度在生产环境中,通常会遇到不同服务间的调用,以及数据库的调用。容器的应用又是分布式的架构,应用分成不同的组件,以服务的形式在容器中通过api对外提供服务。为了保证高可用,每个组件运行多个副本,每个服务会跑多个示例。容器会组成集群,集群中的容器会根据业务的需要动态创建和销毁。这样,系统成为了一种动态的可伸缩的系统,需要进行容器的编排。 容器的编排包括容器的管理、调度、集群的定义、服务的发现等等。根据编排引擎,容器会被组成不同的cluster,去实现业务的需求。 K8S的理论基础为谷歌的Borg,是一个容器调度编排系统。 ?K8S的几个核心概念: POD:一组容器的集合,共享网络空间和存储,对外共享ip,每个容器可以有自己的端口。表示一组比较紧密的容器。在pod之上会有kubelet进行管理。 服务:对外,需要做一个内外映射。 node:节点,分为work node和master node。master node承载了api server等等,背后的状态数据会存在ETCD里面。 job:含有生命周期。 daemon:长时间运行的服务。类似于操作系统中deamon的进程。 还可以为主机或者pod打label用于做选择。 Docker和Devops在交付的流程中,原来交付的是代码。通过容器,可以将应用交付的标准统一到容器之上,以标准交付件的形式,实现跨阶段的标准化发布流程。可以确保一致的交付物贯穿整个的开发测试运维的场景。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 23:51:11- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |