一、简介

Docker是一个能够把开发的应用程序自动部署到容器的开源引擎。Docker在虚拟化的容器执行环境中增加了一个应用程序部署引擎。该引擎的目标就是提供一个轻量、快速的环境,能够运行开发者的程序,并方便高效地将程序从开发者的笔记本部署到测试环境,然后再部署到生产环境。Docker极其简洁,它所需的全部环境只是一台仅仅安装了兼容版本的Linux内核和二进制文件最小限的宿主机

大多数Docker容器只需不到一秒钟即可启动,由于去除了管理程序的开销,Docker容器拥有很高的性能,同时同一台宿主机中也可以运行更多的容器,使用户可以尽可能充分地利用系统资源。

二、Docker组件

Docker客户端和服务器、Docker镜像、Registry、Docker容器

1、Docker客户端和服务器

Docker是一个客户-服务器(C/S)架构的程序。Docker客户端只需向Docker服务器或守护进程发出请求,服务器或守护进程将完成所有工作并返回结果。Docker提供了一个命令行工具docker,可以在同一台宿主机上运行Docker守护进程和客户端,也可以从本地的Docker客户端连接到运行在另一台宿主机上的远程Docker守护进程。

2、Docker镜像

Docker镜像是一个只读的模板。例如,一个镜像可以包含安装了Apache Web服务应用的Ubuntu操作系统。镜像可以用来创建Docker容器。Docker提供了构建新镜像或升级原有镜像的较为便利的方式,或者你也可以下载别人已经创建好的镜像。Docker镜像是Docker的构建组件。

镜像是构建Docker世界的基石。用户基于镜像来运行自己的容器。镜像也是Docker生命周期中的“构建”部分。镜像是基于联合文件系统的一种层式的结构。由一系列指令一步一步构建出来。例如:添加一个文件,执行一个命令,打开一个端口。

也可以把镜像当做容器的“源代码”。镜像体积很小,非常“便携”,易于分享、存储和更新。

3、Registry

Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。Docker 仓库分为公有和私有。公有的 Docker 仓库名字是 Docker Hub。Docker Hub 提供了庞大的镜像集合供使用。这些镜像可以是自己创建,或者在别人的镜像基础上创建。Docker 仓库是 Docker 的分发部分。

Docker Hub 是一个用于分享、管理 Docker 容器的 Docker SaaS 平台。由Docker公司负责维护的公共注册中心,包含超过15,000个可用来下载和构建容器的镜像,并提供认证、工作组结构、工作流工具(比如webhooks)、构建触发器以及私有工具。

4、Docker容器

Docker 容器和文件夹很类似,一个Docker容器包含了所有的某个应用运行所需要的环境每一个 Docker 容器都是从 Docker 镜像创建的Docker 容器可以运行、开始、停止、移动和删除。每一个 Docker 容器都是独立和安全的应用平台,Docker 容器是 Docker 的运行部分

三、Docker作用

1、加速本地开发和构建流程,使其更加高效、更加轻量化。本地开发人员可以创建、运行并分享Dokcer容器。容器可以在开发环境中构建,然后轻松地提交到测试环境中,并最终进入生产环境。

2、能够让独立服务或应用程序在不同的环境中,得到相同的运行结果。这一点在面向服务的架构和重度依赖微型服务的部署中尤其实用。

3、用Docker创建隔离的环境进行测试。例如,用Jenkins这样的持续集成工具启动一个用于测试的容器。

4、构建一个多用户的平台即服务基础设施。Docker能够作为云计算的多租户容器,使用Docker能容易为每个租户创建运行应该多个实例,这得益其灵活的快速环境以及有效diff命令。

5、高性能、超大规模的宿主机部署。

6、Docker通过创建进程的容器,不必重新启动操作系统,几秒内能关闭,你可以在数据中心创建或销毁资源,不用担心额外消耗。典型的数据中心利用率是30%,通过更积极的资源分配,以低成本方式对一个新的实例实现一个更聚合的资源分配,我们很容易超过这个利用率,大大提高数据中心的利用效率。

四、命名空间

命名空间是Linux内核为实现容器虚拟化而引入的特性。每个容器都有自己的命名空间,这保证了容器之间的互不影响。利用该特性,容器实现了在内核、文件系统、网络、PID、UID、IPC、内存、硬盘、CPU等资源的隔离,而不再是应用进程直接共享的状态。

1、进程命名空间
Linux通过命名空间管理进程号,同一进程在不同的命名空间中的进程号是不同的。进程命名空间是一个父子关系的结构,子空间的进程可看到父进程的ID。

2、网络命名空间
通过网络命名空间可以实现网络的完全隔离。一个网络命名空间为进程提供了一个完全独立的网络协议栈的视图。包括网络设备接口、IPv4和IPv6协议栈、IP路由表、防火墙规则、sockets等。Docker可采用虚拟网络设备(Virtual Network Device)的方式将不同命名空间的网络设备连接在一起。默认情况下,容器的虚拟网卡将与宿主机的docker0网桥连接在一起。

3、IPC命名空间
进程间交互(Interprocess Communication - IPC)的信息包括信号量、消息队列、共享内存等。同一IPC命名空间的进程可以交互;否则不行。PID命名空间和IPC命名空间可以组合使用。

4、挂载命名空间
挂载命名空间可以将一个进程放到一个特定的目录执行,且允许不同命名空间的进程看到的文件结构不同,将各个命名空间中的进程看到的文件目录隔离。

5、UTS命名空间
UTS(UNIX Time-sharing System)命名空间可以另每个容器拥有独立的主机名和域名,从而虚拟出一个拥有独立主机名和独立网络空间的环境。默认情况下,Docker容器的主机名就是容器的ID。

6、用户命名空间
每个容器拥有不同的用户和组ID,容器可以使用自身内部的特定用户执行程序,而非宿主机系统上存在的用户。每个容器内部都可以有root账号,且跟宿主机不在同一命名空间。

 
 
 
 

01_Docker概念简介、组件介绍、使用场景和命名空间的更多相关文章

  1. 开源免费且稳定实用的.NET PDF打印组件itextSharp(.NET组件介绍之八)

    在这个.NET组件的介绍系列中,受到了很多园友的支持,一些园友(如:数据之巅. [秦时明月]等等这些大神 )也给我提出了对应的建议,我正在努力去改正,有不足之处还望大家多多包涵.在传播一些简单的知识的 ...

  2. RxJava系列2(基本概念及使用介绍)

    RxJava系列1(简介) RxJava系列2(基本概念及使用介绍) RxJava系列3(转换操作符) RxJava系列4(过滤操作符) RxJava系列5(组合操作符) RxJava系列6(从微观角 ...

  3. java 并发多线程显式锁概念简介 什么是显式锁 多线程下篇(一)

    目前对于同步,仅仅介绍了一个关键字synchronized,可以用于保证线程同步的原子性.可见性.有序性 对于synchronized关键字,对于静态方法默认是以该类的class对象作为锁,对于实例方 ...

  4. 【Machine Learning】机器学习及其基础概念简介

    机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

  5. .NET平台开源项目速览(6)FluentValidation验证组件介绍与入门(一)

    在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,给大家初步介绍了一下FluentValidation验证组件.那里只是概述了一下,并没有对其使用和强大功能做深入研究 ...

  6. Android四大基本组件介绍与生命周期

    Android四大基本组件介绍与生命周期 Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器 ...

  7. Java多线程概念简介 多线程中篇(一)

    Java的线程与操作系统的线程   在线程的相关介绍中,有讲到“线程的实现”分为三种:内核支持,用户级以及两者混合.(这只是一种简要的分类) Java线程在JDK1.2之前,是用户线程实现的 而在JD ...

  8. 使用Unity中的Box Collider组件完成游戏场景中的碰撞检测功能

    一.介绍 目的:通过Unity自带的组件完成游戏场景中的碰撞检测功能. 软件环境:Unity 2017.3.0f3 二.实现过程 1,在面板中点击Add Component按钮 2,添加Box Col ...

  9. NET平台开源项目速览(6)FluentValidation验证组件介绍与入门(转载)

    原文地址:http://www.cnblogs.com/asxinyu/p/dotnet_Opensource_project_FluentValidation_1.html 阅读目录 1.基本介绍 ...

随机推荐

  1. 浏览器根对象window之caches

    在控制台输入window. caches可输出一个叫做CacheStorage的对象,它用来存储 Response 对象的.也就是说用来对 HTTP ,响应做缓存的.虽然 localStorage 也 ...

  2. 福大软工1816:Beta(5/7)

    Beta 冲刺 (5/7) 队名:第三视角 组长博客链接 本次作业链接 团队部分 团队燃尽图 工作情况汇报 张扬(组长) 过去两天完成了哪些任务 文字/口头描述 组织会议 确定统一界面wxpy.db之 ...

  3. 2 python全局变量如何指定(是在模块内,还是函数内)

    示例代码1 xx=1 def __recurrence(): # #前面的0到sentence_length-1的下标,存储的就是最原始的词向量,但是我们也要将其转变为Tensor global xx ...

  4. Aheadof Time Compilation(AOT) vs (JIT)Just In Time compilation approach

    像java这样的高级语言,往往先做好部分编译,在运行时,再使用JIT将前面编译的中间件输出编译为机器语言,放到机器上运行.这可能会影响到运行的性能. 再比如,像angular的web 应用,angul ...

  5. bug管理工具

    1..禅道 禅道项目管理软件(简称:禅道)集产品管理.项目管理.质量管理.文档管理.组织管理和事务管理于一体,是一款功能完备的项目管理软件,完美地覆盖了项目管理的核心流程. 禅道的主要管理思想基于国际 ...

  6. 发布MVCIIS报错未能加载文件或程序

    未能加载文件或程序集“System.Web.Http.WebHost, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e3 ...

  7. HTML--<frameset>標簽

    <html><frameset rows="20,80"> <frame src="/example/html/frame_a.html&q ...

  8. [SQL Server]SQL行转列

    SELECT * FROM (select ActionTargetType+actiontype as TypeResult, COUNT(RowGuid) as Number from BanJi ...

  9. November 24th 2016 Week 48th Thursday

    All the bright precious things fade so fast. 所有的光鲜靓丽都敌不过时间. What is permanent? Thoughts and ideas. P ...

  10. n = 3 , while n , continue