docker的入门简介

可能写的不是很完美,需要大家指正修改和意见(谢谢合作)

docker的入门:

docker的好处:

1.更快交付你的应用(Faster delivery of your applications)

2.让部署和测试更加简单(Deploying and scaling more easily)

3.实现更高密度和更多的负载 (Achieving higher density and running more workloads)

docker的目标:

docker的目标是实现轻量级的操作系统虚拟化解决方案,创建软件程序可移植的轻量容器

docker底层实现

  • docker的基础是linux容器(LXC)等技术
  • 在LXC的基础上docker进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。
  • docker是使用Cgroups来提供的容器隔离,而union文件系统用于保存镜像并使容器变得短暂

简介Cgroups:

Cgroups是linux内核提供的一种可以限制单个进程或者多个进程所使用资源的机制,可以对cpu,内存等资源实现精细话的控制,目前越来越火的轻量级容器docker就是使用了Cgroups提供的资源限制能力来完成cpu,内存部分的资源控制

另外,开发者也可以使用Cgoups提供的精细化控制能力,限制某一个或者某一组进程的资源调用,比如在一个部署web服务器也部署可后端计算模块的八核服务器上,可以使用Cgroups限制web server仅可以使用计算计6核,把剩下的两核给后端计算模块

本文从以下四个方面描述cgroups的原理及用法:1.Cgroups概念及原理2.Cgroups文件系统概念及原理3.Cgroups使用方法介绍4.Cgroups实践中的例子概念及原理:Cgroups子系统

cgroups的全称是control(管理) groups,cgroups为每种可以控制的资源定义了一个子系统,典型的子系统介绍如下:

  1. cpu子系统:主要限制进程cpu使用率
  2. cpuacct子系统:可以统计cgroups中的进程的cpu试用报告
  3. cpuset子系统:可以为Cgroups中的进程分配单独的cpu节点或者内存节点
  4. memory子系统:可以限制进程的memory使用量。
  5. blkio子系统:可以限制进程的块设备io
  6. devices子系统:可以控制进程能访问某些设备
  7. net_cls子系统,可以标记Cgroups中进程的网络数据包,然后可以使用tc模块(traffic control)对数据包进行控制
  8. freezer子系统:可以挂起或者恢复cgroups中的进程
  9. ns子系统:可以使用不同Cgroups下面的进程使用不同的namespace

这里边的每一个子系统都需要与内核的其他模块配合来完成资源控制,比如对cpu资源的限制是通过进程调度模块根据cpu子系统的配置完成的

对内存资源限制的规则是内存模块根据memory子系统配置来完成的

对网络数据包的控制则需要traffic control子系统来配合完成

本文不会讨论内核是如何使用每一个子系统来实现资源的限制,而是重点放在内核是如何把 cgroups 对资源进行限制的配置有效的组织起来的,和内核如何把cgroups

配置和进程进行关联的,以及内核是如何通过 cgroups 文件系统把cgroups的功能暴露给用户态的。

深入Cgroups

http://blog.jobbole.com/88836/

http://www.ttlsa.com/linux/use-cgroups-to-limit-mongodb-memory-usage/

docker和虚拟机的对比:

虚拟机;vmware需要模拟整台服务器包括硬件,每台虚拟机都需要有自己的操作系统,

虚拟机只要被开启,那么分配给他的资源他将全部使用,每一台虚拟机包括应用,必要的二进制和库以及一个完整的用户操作系统

容器:容器是和宿主机操作系统共享硬件资源及操作系统,可以实现资源的动态分配,在容器内包含应用和其所有的依赖包,但是与其他容器共享内核,容器在宿主机在用户空间以分离的进程运行

优点:

  1. 启动快秒级别
  2. 需要的资源较少,docker在操作系统级别进行虚拟化,docker容器和内核交互,几乎没有性能损耗,性能优于通过hypervisor层与内核层的虚拟化
  3. 部署快:不用建立实体樯隔离(多NameSpace),有样板间可参考(镜像服务)

  

docker的特性:

交互式shell:docker可以分配一个虚拟终端并关联到任何容器的标准输入上,列入运行一个一次性交互shell

文件系统隔离:每个进程容器运行在完全独立的根文件系统里

写时复制:采用写时复制方式创建根文件系统,这让部署变得极其快捷,并且节省内存和硬盘空间

资源隔离:可以使用cgroups为每个进程分配不同的系统资源

网络隔离:每个进程容器运行在自己的网络空间里,拥有自己的虚拟接口和IP地址

日志记录:docker将会收集和记录每个进程容器的标准流(stdout/stderr/stdin),用于实时检索或批量检索

变更管理:容器文件系统的变更可以提交到新的映像中,并可重复使用已创建更多的容器,无需使用模板或手动配置

docker几个引擎(主要组建):

  1. server,就是一个守护进程,他会一直运行在后台
  2. rest api,说明如何与server交互和指示它执行命令
  3. client,是客户书写指令的地方,也俗称shell
  4. image;俗称镜像
  5. container:容器,装载和运行镜像
  6. network:网络,容器通过暴漏端口与主机端口绑定,达到接受来自主机的信号
  7. volume:外挂为了能够持久化数据以及共享容器之间的数据docker提供出了volume的概念

docker运行流程:

当我们想运行一个容器的时候docker会:

  1. 拉取一个镜像,若本地不存在则在网上拉取
  2. 创建新的容器
  3. 分配union文件系统并且挂着一个可读写的层,任何修改容器的操作都会被记录在这个读写层上,你可以保存这些修改成新的镜像,也可以选择不保存,那么下次运行改镜像的时候所有修改操作都会被消除
  4. 分配网络\桥接接口,创建一个允许容器与本地主机通信的网络接口
  5. 设置ip地址,从池中寻找一个可用的ip地址附加到容器上,换句话说,localhost并不能访问到容器
  6. 运行你指定的程序
  7. 捕获并且提供应用输出,包括输入、输出、报错信息

原文地址:https://www.cnblogs.com/yaozhiqiang/p/9790243.html

时间: 2024-11-08 22:07:19

docker的入门简介的相关文章

Docker快速入门——Docker简介

Docker快速入门--Docker简介 一.Docker简介 1.Docker简介 Docker是Docker Inc公司开源的一项基于Ubuntu LXC技术构建的应用容器引擎,源代码托管在GitHub上,完全基于go语言开发并遵守Apache2.0协议开源.Docker可以让开发者打包应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的Linux版本机器上,也可以实现虚拟化.Docker容器完全使用沙箱机制,容器相互之间不会有任何接口,并且容器性能开销极低.Docker最初是在

《Docker技术入门与实战》pdf

下载地址:网盘下载 内容简介  · · · · · · [编辑推荐] <Docker技术入门与实战>是中国首部docker著作,一线Docker先驱实战经验结晶,来自IBM和新浪等多位技术专家联袂推荐! <Docker技术入门与实战>结合企业生产环境,深入浅出地剖析 Docker 的核心概念.应用技巧.实现原理以及生态环境,为解决各类问题提供了有价值的参考. [内容简介] 在云计算时代,开发者将应用转移到云上已经解决了硬件管理的问题,然而软件配置和管理相关的问题依然存在.Docke

Docker新手入门:基本用法

Docker新手入门:基本用法 1.Docker简介 1.1 第一本Docker书 工作中不断碰到Docker,今天终于算是正式开始学习了.在挑选系统学习Docker以及虚拟化技术的书籍时还碰到了不少麻烦,主要就是没有特别经典的书!Docker的<第一版Docker书>和<Docker技术入门与实战>普遍评价不高,而<Docker开发实践>和<Dockeru源码分析>又是2015年最近才出的,评价不是很多.综合看了下,最终还是选择了<Docker开发实

Docker基础入门实战(一)

Docker基础入门实战 第1章          docker简介 1.1  what is Docker Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源,源代码部署在GitHub上. Docker是通过内核虚拟技术来提供容器的资源隔离与安全保障,由于Docker通过操作系统层的虚拟化实现隔离,所以Docker容器在运行时,不需要类似虚拟机(VM)额外的操作系统开销,从而提高资源的利用率. Docker的目标是实现轻量级的操作系统虚拟化解决方案. 1.2 

Docker快速入门——Docker常用命令

Docker快速入门--Docker常用命令 一.Docker命令简介 1.Docker命令简介 Docker的命令清单可以通过运行sudo docker或者sudo docker help命令查看.Docker容器技术在不断演化过程中,Docker的子命令已经达到41个,其中核心子命令(例如:run)还会有复杂的参数配置.Docker命令根据功能和使用场景可以分为4个部分. 2.Docker用户组 Docker守护进程绑定的是一个unix ?socket,而不是TCP端口,默认的属主是root

Docker快速入门——Docker镜像制作

Docker快速入门--Docker镜像制作 一.Dockerfile脚本 1.Dockerfile脚本简介 Dockerfile是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容就是描述该层应当如何构建.Dockerfile文件示例如下: ## Dockerfile文件格式 # This dockerfile uses the ubuntu image # VERSION 2 - EDITION 1 # Author: docker_us

Docker快速入门——Docker-Compose

Docker快速入门--Docker-Compose 一.Docker-Compose简介 1.Docker-Compose简介 Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排.Docker-Compose将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container).Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一

《Docker技术入门与实战第3版2018版》高清中文PDF下载

<Docker技术入门与实战第3版2018版>高清中文PDF下载资料简介:本书从Docker基本原理开始,深入浅出地讲解Docker的构建与操作,内容系统全面,可帮助开发人员.运维人员快速部署Docker应用.本书分为四大部分:基础入门.实战案例.进阶技能.开源项目,*部分(第1-8章)介绍Docker与虚拟化技术的基本概念,包括安装.镜像.容器.仓库.数据卷.端口映射等:第二部分(第9-16章)通过案例介绍Docker的应用方法,包括与各种操作系统平台.SSH服务的镜像.Web服务器与应用.

Docker技术入门与实战下载 &#182772;

下载地址: http://www.gqylpy.com/di/8 <Docker技术入门与实战.pdf>PDF高清完整版-下载 本书从Docker基本原理开始,深入浅出地讲解Docker的构建与操作,内容系统全面,可帮助开发人员.运维人员快速部署Docker应用.本书分为四大部分:基础入门.实战案例.进阶技能.开源项目,部分(第1-8章)介绍Docker与虚拟化技术的基本概念,包括安装.镜像.容器.仓库.数据卷.端口映射等:第二部分(第9-16章)通过案例介绍Docker的应用方法,包括与各种