Docker 容器相关技术
Docker 依赖的Linux内核特性
- Namespaces 命名空间
- Control groups (cgroups) 控制组
理解这两个特性,能够更好的帮助我们理解docker的资源分配和管理
Namespaces 命名空间
很多编程语言都包含有命名空间的概念,可以认为命名空间是一种封装的概念,编程中的封装目的是实现代码的隔离。
编程语言:
封装 -----> 代码隔离
操作系统:
系统资源的隔离
系统资源包括 进行、网络、文件系统...
实际上Linux系统内核实现命名空间的目的之一就是为了实现轻量级虚拟化服务,也就是我们说的容器。
在同一个命名空间下的进程可以感知彼此的变化,二对其他命名空间下的进程一无所知,这样可以让容器中的进程产生一种错觉,仿佛置身于一个独立的系统环境中,以此达到独立和隔离的目的。
从docker的公开文档中可以看到使用了 5 种不同的命名空间
- PID (Process ID) 进程隔离
- NET (Network) 管理网络接口
- IPC (InterProcess Communication) 管理跨进程通信的访问
- MNT (Mount) 管理挂载点也就是文件系统
- UTS (Unix Timesharing System) 隔离内核和版本标识
这些隔离的资源是如何管理起来的呢,这就需要用到 Control groups
Control groups 控制组
Control groups 是Linux系统内核提供的一种可以限制,记录和隔离进程组所使用的物理资源的机制,最初由Googler工程师提出,
并且在2007年被Linux内核的2.6.24版本整合进来,可以说cgroups就是为了实现容器而生的,没有cgroups就没有容器的技术的今天。
Control groups控制组提供了哪些功能:
- 资源限制 比如Memory子系统可以为进程组设定一个内存使用的上限,一旦进程组使用的内存达到的上限,在申请内存就会发出Out of Memory的消息
- 优先级设定 可以设定哪些进程组使用更大的CPU或者是磁盘IO 的资源
- 资源计量 可以计算进程组使用了多少系统资源,尤其在计费系统中这点非常重要
- 资源控制 可以将进程组挂起和恢复
这两个特性带给了Docker容器的哪些能力呢?
Docker容器的能力
- 文件系统隔离:每个容器都有自己的root文件系统
- 进程隔离: 每个容器都运行在自己的进程环境中
- 网络隔离:容器间的虚拟网络接口和IP地址都是分开的
- 资源隔离和分组:使用cgroups将CPU 和内存之类的资源独立分配给每个Docker容器
Docker 容器相关技术的更多相关文章
- Docker容器相关技术
docker需要依赖的Linux内核特性:(1)Namespaces 命名空间PID(Process ID) 用来隔离进程NET(Network) 管理网络接口IPC(InterProcess com ...
- Docker容器化技术
1. 初始Docker 1.1 Docker概念 Docker概念:Docker是一个开源的应用容器引擎 诞生于2013年初,基于Go实现,dotCloud公司出品(后改名为Docker Inc) D ...
- Docker容器化技术(下)
Docker容器化技术(下) 一.Dockerfile基础命令 1.1.FROM - 基于基准镜像 FROM centos #制作基准镜像(基于centos) FROM scratch #不依赖任何基 ...
- Docker容器化技术(上)
目录 Docker容器化技术 一.介绍 二.Docker的发展 三.Docker安装 四.阿里云Docker镜像加速 五.Docker的基本概念 六.命令 七.Docker宿主机与容器通信 八.容器内 ...
- docker容器虚拟化技术
简单来说,在Windows系统下安装各种运行环境的坑简直不要太多了(● ̄(エ) ̄●),并不仅限于docker.Nginx.PHP.Python等等,我会尽详细写出实际过程中遇到的各种各样的奇葩问题 1 ...
- 新一代Java程序员必学的Docker容器化技术基础篇
Docker概述 **本人博客网站 **IT小神 www.itxiaoshen.com Docker文档官网 Docker是一个用于开发.发布和运行应用程序的开放平台.Docker使您能够将应用程序与 ...
- docker容器的学习笔记
目录 Docker入门学习笔记(一) 1. 什么是Docker? 2. Docke的目标 3. Docker通常应用场景 4. Docker的基本组成 补:Docker容器相关技术简介 安装Docke ...
- docker容器dockerfile详解
docker公司在容器技术发展中提出了镜像分层的理念,可以说也是这个革命性的理念让原本只不过是整合linux内核特性的容器,开始野蛮生长. docker通过UnionFS联合文件系统将镜像的分层实现合 ...
- Docker容器技术-基础命令
一.基础命令 1.运行一个镜像 [root@bogon ~]# docker run debian echo "Hello World" Unable to find image ...
随机推荐
- qnx 黑莓系统
qnx 黑莓图形系统框架 http://www.360doc.com/content/07/0807/10/38907_658192.shtml http://blog.csdn.net/keyboa ...
- 写makefile时候的cc和gcc
Linux 下 的 cc 和 gcc Linux 下 的 cc 和 gcc 周银辉 在Linux下一会看到cc,另一会又看到gcc,感觉又点混乱的样子.它们是同一个东西么,有啥区别呢 一分为二 ...
- INSPIRED启示录 读书笔记 - 第1章 关键角色及其职责
现代软件产品团队 1.产品经理的主要职责分为两项:评估产品机会和定义要开发的产品 2.用户体验设计师(由多种角色组成,这里面最关键的是交互设计师) 交互设计师负责深入理解目标用户,设计有价值 ...
- 在各种Linux发行版上安装Git的教程
Git是一个流行的开源版本控制系统(VCS),最初是为Linux环境开发的.跟CVS或者SVN这些版本控制系统不同的是,Git的版本控制被认为是“分布式的”,某种意义上,git的本地工作目录可以作为一 ...
- Go 书单
一.<Go语言学习笔记> (未找到对应版本的电子书,大家可以去作者github:https://github.com/qyuhen/book) 推荐理由:作为时下流行的一种系统编程语言,G ...
- 2015年蓝桥杯C/C++ B组题目题解
1. 输入一个字符串,求它包含多少个单词.单词间以一个或者多个空格分开. 第一个单词前,最后一个单词后也可能有0到多个空格.比如:" abc xyz" 包含两个单词,"a ...
- RHEL 7 安装 ngnix
安装ngnix yum install -y make apr* autoconf automake curl curl-devel gcc gcc-c++ gtk+-devel zlib-devel ...
- java深入探究12-框架整合
1.Spring与Hibernate整合 需要配置的就是hibernate和bean.xml 1)关键点:sessionFactory创建交给SpringIOC:session的事务处理交给Sprin ...
- Flume-NG源码阅读之HBaseSink
关于HBase的sink的所有内容均在org.apache.flume.sink.hbase包下. 每个sink包括自己定制的,都extends AbstractSink implements Con ...
- js字符串转dom
function parse2dom(str){ var div = document.createElement("div"); if(typeof str == "s ...