一、简介

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. com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/NOTICE

    在将vivo eclipse sdk 迁移 android studio  时候报错 Error:Execution failed for task ':vivosdk:transformResour ...

  2. PDW V2培训简记

    最近有幸参加了微软专家进行的为期一周PDW培训,将一些知识点记录如下: 不知道PDW是什么东西的,简单介绍一下:这是微软与HP/Dell合作推出的SQL Server数据仓库一体机,由HP或DELL提 ...

  3. Android分享---调用系统自带的分享功能

    以前我们总想到友盟等平台分享功能的集成,集成这玩意还得下载对应的jar包.当然,用这些平台的分享并不是说什么好处都没有,至少人家的统计功能还是很实用的.不过有的时候我们是不需要多余功能的,只需要能分享 ...

  4. Android MVP Plugin,一键完成MVP结构代码编写

    推荐一个Gradle的学习系列,Gradle相关的知识一直很匮乏,难得发现一个不错的系列: http://www.cnblogs.com/davenkin/p/gradle-learning-1.ht ...

  5. Android资源文件说明

    一. Android资源文件简介 1. Android应用资源的作用 (1) Android项目中文件分类 在Android工程中, 文件主要分为下面几类 : 界面布局文件, Java src源文件, ...

  6. Storm并行度

    1.Storm并行度相关的概念 Storm集群有很多节点,按照类型分为nimbus(主节点).supervisor(从节点),在conf/storm.yaml中配置了一个supervisor有多个槽( ...

  7. PSP软件开发过程

    1. 引言 这是为了编写psp系统的软件需求分析,主要按照提供的相关需求和功能. 1.1 项目风险 风险承担者包括: 任务提出者:承担任务不能完全按照想象的做出,投入等: 软件开发者:可能不能按时交付 ...

  8. LeetCode题解之Missing Number

    1.题目描述 2.题目分析 将 [ 0 , n ]之间的整数放到 n 个元素的数组中去,必然缺失一个元素.在一次遍历中,将元素n[i] 放到 n[ n[i] ] ,位置.最后检查元素值和下标不相等的情 ...

  9. Linux env命令详解

    env:查询环境变量 常用的命令展示 查看当前环境的环境变量 [root@localhost ~]# env HOSTNAME=localhost.localdomain SELINUX_ROLE_R ...

  10. 铁乐学python_day01-作业

    第一题:使用while循环输入 1 2 3 4 5 6 8 9 10 # 使用while循环输入 1 2 3 4 5 6 8 9 10 count = 0 while (True) : count = ...