文档章节

Docker概念和原理

栋哥运维
 栋哥运维
发布于 2016/08/02 01:08
字数 1555
阅读 26
收藏 2

一、什么是Dcoker

    Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。

Docker通常用于如下场景:

    web应用的自动化打包和发布;

    自动化测试和持续集成、发布;

    在服务型环境中部署和调整数据库或其他的后台应用;

    从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

二、Docker的三大核心概念

Docker镜像

    Docker镜像(Image)类似与虚拟机的镜像,可以将他理解为一个面向Docker引擎的只读模板,包含了文件系统。

    例如:一个镜像可以完全包含了Ubuntu操作系统环境,可以把它称作一个Ubuntu镜像。镜像也可以安装了Apache应用程序(或其他软件),可以把它称为一个Apache镜像。

    镜像是创建Docker容器的基础,通过版本管理和增量的文件系统,Docker提供了一套十分简单的机制来创建和更新现有的镜像。

    用户可以从网上下载一个已经做好的应用镜像,并通过命令直接使用。

    总之,应用运行是需要环境的,而镜像就是来提供这种环境。

Docker容器

    Docker容器(Container)类似于一个轻量级的沙箱子(因为Docker是基于Linux内核的虚拟技术,所以消耗资源十分少),Docker利用容器来运行和隔离应用。

    容器是从镜像创建的应用运行实例,可以将其启动、开始、停止、删除,而这些容器都是相互隔离、互不可见的。

    可以吧每个容器看作一个简易版的Linux系统环境(包括了root用户权限、进程空间、用户空间和网络空间),以及与运行在其中的应用程序打包而成的应用盒子。

    镜像自身是只读的。容器从镜像启动的时候,Docker会在镜像的最上层创建一个可写层,镜像本身将保持不变。就像用ISO装系统之后,ISO并没有什么变化一样。

 

Docker仓库

    Docker仓库(Repository)类似与代码仓库,是Docker集中存放镜像文件的场所。

    有时候会看到有资料将Docker仓库和注册服务器(Registry)混为一谈,并不严格区分。实际上,注册服务器是存放仓库的地方,其上往往存放着多个仓库。每个仓库集中存放某一类镜像,往往包括多个镜像文件,通过不同的标签(tag)来进行区分。例如存放Ubuntu操作系统镜像的仓库,称为Ubuntu仓库,其中可能包括14.04,12.04等不同版本的镜像。

    根据存储的镜像公开分享与否,Docker仓库分为公开仓库(Public)和私有仓库(Private)两种形式。

    目前,最大的公开仓库是Docker Hub,存放了数量庞大的镜像供用户下载。国内的公开仓库包括Docker Pool等,可以提供稳定的国内访问。山东理工大学开源社区什么时候搞个这个啊,可以提上进程。

    如果用户不希望公开分享自己的镜像文件,Docker也支持用户在本地网络内创建一个只能自己访问的私有仓库。

    当用户创建了自己的镜像之后就可以使用push明亮将它上传到指定的公有或则私有仓库。这样用户下次在另一台机器上使用该镜像时,只需将其从仓库pull下来就可以了。

    Docker利用仓库管理镜像的设计理念甚至命令和git非常相似,也就意味着非常好上手,尽管目前我git还不是很熟练。

Docker特性

    1.启动速度为秒级,共享Kernel几乎没有性能损耗,资源消耗小

    2.提供隔离的运行环境

        -文件系统隔离

        -网络隔离

        -进程号隔离

        -进程间通信隔离

    3.提供资源限制

        -CPU计算资源

        -内存资源

        -磁盘I/O资源

    4.一个容器只干一件事情

        保证容器提供服务的服务质量并且可以降低容器之间的相互干扰

    5.docker镜像是分层的,比如把一个centos启动成容器,然后装一个服务保存,就是在原本的镜像层上又加了一层

隔离的原理

    CGroups:限制容器的资源使用,

    Namespace机制实现容器间的隔离

    chroot:文件系统的隔离

    liunx内核提供的限制,记录和隔离进程组所使用的资源

    通过不同的子系统来实现对不同资源使用的控制和记录

docker的守护进程和客户端的连接方式

    通过socket链接

    unix:///var/run/docker.sock

    tcp://host:port

    fd://socketfd

docker的运行模式

    用户可以通过命令行的接口或者自定义的应用和客户端连接,客户端可以是docker提供的二进制程序、shell中运行的docker命令、用户自定义的程序,
    程序是通过remoteAPI来调用docker的服务,docker的客户端和服务端通过socket连接,
    这种连接意味着docker的客户端和服务端既可以在同一台机器上运行也可以在不同的机器上运行,
    docker的客户端可以通过远程访问的方式来访问docker服务端
    
    
 

© 著作权归作者所有

共有 人打赏支持
栋哥运维
粉丝 0
博文 13
码字总数 3102
作品 0
广州
运维
私信 提问
广州站|一场36小时的集中脑爆式Docker培训课程

Docker是基于Go语言实现的云开源项目,诞生于2013年初,最初发起者是dotCloud公司。Docker自开源后就受到广泛的关注和讨论,目前已有多个相关项目,逐渐形成了围绕Docker的生态体系。dotClou...

DockOne
2016/11/10
7
0
必看系列:Kubernetes网络模型原理详解

  导语:Kubernetes目前看来已经成为了docker的应用最多的编排工具,所以学习使用docker容器的话,就免不了使用Kubernetes,但是其网络原理还是比较晦涩难懂,所以还是有必要专门解析关于K...

云栖社区
2018/05/31
0
0
Kubernetes网络模型原理

导语: Kubernetes目前看来已经成为了docker的应用最多的编排工具,所以学习使用docker容器的话,就免不了使用Kubernetes,但是其网络原理还是比较晦涩难懂,所以还是有必要专门解析关于Kub...

先生我不会
2018/05/14
0
0
深入分析Docker镜像原理(上)

第一部分:Docker镜像的基本知识 1.1 什么是Docker镜像 从整体的角度来讲,一个完整的Docker镜像可以支撑一个Docker容器的运行,在 Docker容器运行过程中主要提供文件系统视角。例如一个ubu...

苏宁公有云
2015/08/24
0
0
容器技术|Docker三剑客之docker-machine

本文已获得原作者霸都民工哥授权。 上一篇:容器技术|Docker 三剑客之 Compose Docker-machine 是什么? docker-machine就是 docker 公司官方提出的,用于在各种平台上快速创建具有 docker...

掘金官方
2018/07/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Linux iptables之mangle表使用案例

mangle表的用途 mangle表的主要功能是根据规则修改数据包的一些标志位,以便其他规则或程序可以利用这种标志对数据包进行过滤或策略路由。 mangel表使用示例 示例1-策略路由1 内网的客户机通...

月下狼
40分钟前
2
0
OSChina 周日乱弹 —— 兼职我想去学学布偶戏

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @clouddyy : 《火炎 - 女王蜂》 《火炎 - 女王蜂》 手机党少年们想听歌,请使劲儿戳(这里) @小鱼丁 :还在睡觉突然接到一个小哥哥电话“x...

小小编辑
52分钟前
46
4
租房软件隐私保护如同虚设

近日,苏州市民赵先生向江苏新闻广播新闻热线025-84658888反映,他在“安居客”手机应用软件上浏览二手房信息,并且使用该软件自动生成的虚拟号码向当地一家中介公司进行咨询。可电话刚挂不久...

linux-tao
今天
3
0
分布式项目(五)iot-pgsql

书接上回,在Mapping server中,我们已经把数据都整理好了,现在利用postgresql存储历史数据。 iot-pgsql 构建iot-pgsql模块,这里我们写数据库为了性能考虑不在使用mybatis,换成spring jd...

lelinked
今天
6
0
一文分析java基础面试题中易出错考点

前言 这篇文章主要针对的是笔试题中出现的通过查看代码执行结果选择正确答案题材。 正式进入题目内容: 1、(单选题)下面代码的输出结果是什么? public class Base { private Strin...

一看就喷亏的小猿
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部