Docker 概述

docker是一个开发平台,用于开发、传输和运行应用。Docker使你能够分发你的应用为基础设施,使你能够快速的部署软件。使用docker使用管理应用的方式来管理你的基础设施。充分利用docker的传输方法学,测试及迅速的部署代码。可以在写代码和运行程序时减少延迟。

The Docker platform

docker提供一个能力来打包和运行应用,在一个被称为容器的松散的孤立环境中。这种隔离和安全机制可以使你同时在一个主机上运行很多的容器。容器是轻量级,因为它们不需要额外的应用管理负载,直接在主机的内核当中运行。意味着可以在给定的硬件当中运行更多的容器(比虚拟机成本要低很多)。甚至可以在虚拟机当中运行docker

    docker提供工具和平台来管理容器的生命周期。

            1. 使用容器开发应用及支持的组件

            2. 容器称为了一个单元用于发布和测试你的应用

            3. 准备发布的时候,作为一个容器或合理安排的服务,无论是产品环境还是云环境,都会是一致的。

Docker Engine

    docker engine 是一个客户端应用:

        a. 一个长时间运行的程序提供服务,docker守护进程(docker  command)

        b. REST API,定义程序和守护进程交互的接口。

        c. 命令行接口


docker engine

CLI 使用docker的REST API或命令行去控制或者和docker的守护进程进行交互。很多其它的docker应用使用底层的API和命令行接口。

守护进程创建和管理docker对象,比如: image、container、网络、磁盘

可以用docker来做什么。

1. 快速,一致发布应用

    docker通过允许开发者在标准的环境使用本地容器提供应用和服务,来简单化开发生命周期。容器对于不断地集成(continuous integration)、发布(continuous delivery)(CI/CD)工作流是非常重要的!

2. 响应式部署

docker基于容器的平台具有具有高度的可移植性的工作负载。docker 容器可以运行在开发者的本地笔记本、在数据中心的物理机或虚拟机当中、云环境或者混合环境等等。

docker的可移植性和轻量级的特征可以使之很轻易地在真实环境当中,根据商业需要,动态地管理工作负载,按比例增加或减少应用服务 。

3. 运行更多的负载在相同的硬件当中。

docker是一个轻量并且快速。相对于应用管理的虚拟机设备,提供了一个可见、成本低廉的选择,所以你可以更加充分地运行本的计算 能力以达到商业布标。docker更喜欢高密度环境用于小型、中型部署,这样可以用更少地资源做更多的事。

Docker architecture

docker使用客户服务端架构(client-server architecture)。Docker客户端与这个Docker守护线程进行交互(Daemon是重中之重),运行和发布docker容器。docker客户端和守护线程能够在同一个操作系统上运行,或者你可以使用client连接远程的守护线程。client和daemon也可以通过REST API进行交互,借助于UNIX sockets套接字或者网络接口。


docker架构

Docker daemon


docker守卫线程监听Docker API请求并管理docker对象(如:images、containers、networkds和磁盘)。一个守卫线程也可以和其他守卫线程进行交互管理Docker服务。(multiple machine)

Docker client


docker是很多docker用户和docker交互的主要方式。当你使用命令行如docker run,客户端便会发送命令到守卫进程并执行。Docker命令使用Docker API。客户端可以和不止一个的守卫进程进行交互。

Docker registries


一个docker注册商(如:docker hub)存储了docker的镜像。docker可以进行配置,默认在docker hub进行查找。也可以自己运行一个私有注册商。如果使用了Docker Datacenter(DDC), 它包括了Docker Trusted Registry(DTR),

当使用docker pull或者docker run命令时,需要的镜像可以从配置的注册商当中拉取。当你使用docker push命令时,你的镜像会被推送到远程注册商当中。

Images (镜像)


一个镜像就是一个只读模板,指示创建容器 。大多数情况下,一个镜像会基于另一个镜像以及一些额外的自定义选项。比如,你可以构建一个基于ubuntu镜像,但是安装apache网站服务器和应用,能够像配置的一样运行起来。

你可以创建自己的镜像或者可以仅仅使用那些已经被其它人创建发布的镜像。为了创建你自己的镜像,你需要创建一个dockerfile,使用相同的语法来定义和步骤来创建镜像并运行。

Container(容器)


一个容器就是就是一个镜像的实例,你可以通过Docker API或命令行创建、启动、停止、移动或者删除。一个容器可以连接多个网络或者基于当前的状态创造更多的镜像。

默认情况下,容器会与其它容器进行隔离,可以控制容器的网络、存储或其他底层系统。容器由镜像定义像其它配置选项一样

底层技术

Docker是用Go语言来写的,充分利用了linux内核的特点类发挥它的作用。

Namespaces(命名空间)


dockers使用一个叫做命名空间的技术来提供隔离工作空间的容器。当运行这个容器的时候,docker创建了一系列的命名空间。

这些命名空间提供了隔离层,每一个容器的各个方面运行着分离的命名空间并且访问限制在这个命名空间当中。

Docker Engine使用如下的命名空间(linux)

    pid: 进行隔离

    net: 管理网络接口

    ipc: 管理访问网络进程通信

    mnt: 管理文件系统和挂载点

    uts: 隔离内核和版本标识(UTS: Unix Timesharing System)

Control groups


     docker engine在linux上可以依赖另一个称为“control group”的技术。一个cgroup限制应用在一个给定的资源集当中。控制组允许docker engine分享可利用的硬件资源并可以强制限制和约束,如:限制容器的内存使用率

Union file systems


union file system或者unionFS,都是文件系统由创建层进行操作,使它们非常的轻量级和快速。Docker Engine使用UnionFS来提供构建块用于容器。Docker Engine可以使用多个UnionFS Variant,包括AUFS,btrfs,vfs和DeviceMapper    

Container format格式

docker engine结合命名空间、控制组和UnionFS至一个称为容器格式的包裹。默认的容器格式就是libcontainerf. 在未来情况下,Docker可能会通过其他容器技术来支持其它的容器格式,比如BSD JAILS或者Solaris Zones.


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,657评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,889评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,057评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,509评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,562评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,443评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,251评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,129评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,561评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,779评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,902评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,621评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,220评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,838评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,971评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,025评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,843评论 2 354

推荐阅读更多精彩内容