一 简介

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

二 特性

2.1 docker特性

  • 标准化
    • 保证一致的运行环境
    • 弹性伸缩,快速扩容
    • 方便迁移
    • 持续集成、持续交付与持续部署
  • 高性能
    • 不需要进行硬件虚拟以及运行完整的操作系统
  • 轻量级
    • 快速启动
    • 隔离性
    • 进程隔离

2.2 容器的组成

容器=cgroup+namespace+rootfs+容器引擎(用户态工具)
  • Cgroup:资源控制
  • Namespace:访问隔离
  • rootfs:文件系统隔离
  • 容器引擎:生命周期控制

2.2 docker与KVM

虚拟化技术依赖物理CPU和内存,是硬件级别的;
而docker构建在操作系统上,利用操作系统的containerization技术,所以docker甚至可以在虚拟机上运行。 虚拟化系统一般都是指操作系统镜像,比较复杂,称为“系统”;
而docker开源而且轻量,称为“容器”,单个容器适合部署少量应用,比如部署一个redis、一个memcached。 传统的虚拟化技术使用快照来保存状态;
而docker在保存状态上不仅更为轻便和低成本,而且引入了类似源代码管理机制,将容器的快照历史版本一一记录,切换成本很低。 传统的虚拟化技术在构建系统的时候较为复杂,需要大量的人力;
而docker可以通过Dockfile来构建整个容器,重启和构建速度很快。更重要的是Dockfile可以手动编写,这样应用程序开发人员可以通过发布Dockfile来指导系统环境和依赖,这样对于持续交付十分有利。
 
特性
容器
虚拟机
部署难度
简单
部署相对复杂
启动
秒级
分钟级
硬盘使用
一般为MB
一般为GB
性能
原生
弱于
系统支持量
单机支持上千个容器
一般几十个
管理效率
管理简单
管理复杂

三 场景

Docker通常用于如下场景:
  • web应用的自动化打包和发布;
  • 自动化测试和持续集成、发布;
  • 在服务型环境中部署和调整数据库或其他的后台应用;
  • 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

四 架构

  • Docker客户端 – Docker
docker客户端则扮演着docker服务端的远程控制器,可以用来控制docker的服务端进程。
  • Docker服务端 – Docker Daemon
docker服务端是一个服务进程,管理着所有的容器。
提示:大部分情况下,docker服务端和客户端运行在一台机器上。
  • Docker镜像 – Image
docker镜像,一个能够运行在docker容器上的一组程序文件,是一个只读的模板。
  • Docker容器 – Docker Container
docker容器,就是运行程序的载体。镜像(Image)是静态的定义,容器是镜像运行时的实体。docker容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
  • Docker镜像仓库 -- Registry
Docker仓库是集中存放镜像文件的场所,Docker仓库分为公开仓库(Public)和私有仓库(Private)两种形式。Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等),镜像不包含任何动态数据。

001.Docker简介概述的更多相关文章

  1. 001.Ceph简介概述

    一 Ceph简介 Red Hat Ceph是一个分布式的数据对象存储,系统设计旨在性能.可靠性和可扩展性上能够提供优秀的存储服务.分布式对象存储是存储的未来,因为它们适应非结构化数据,并且客户端可以同 ...

  2. Docker 简介与shell操作使用

    一.Docker概述 1.Docker简介        Docker是一个开源的应用容器引擎:是一个轻量级容器技术:Docker支持将软件编译成一个镜像:然后在镜像中各种软件做好配置,将镜像发布出去 ...

  3. 进击的docker 一 : Docker 简介

    Docker简介 1.什么是docker 1.1.docker 起源 开源项目 诞生2013年初 GO语言开发实现 遵从了Apache2.0协议 项目代码在GitHub维护 1.2.docker目标 ...

  4. Docker简介

    Docker简介 1.容器虚拟化,比传统的虚拟化轻量 2.2013年出现,发展非常迅猛 3.Redhat在6.5版本开始支持docker 4.使用go语言开发,基于apache2.0协议 5.开源原件 ...

  5. Docker 简介及安装

    Docker简介: 什么是Docker?将应用程序自动部署到容器 go语言开源引擎  Github地址:https://github.com/docker/docker 2013年初 dotCloud ...

  6. 【转】Docker简介与入门

    转自:https://segmentfault.com/a/1190000000448808 Docker是个新生的事物,概念类似虚拟化.网上关于Docker入门的东西已经很多了.不过本文探讨了Doc ...

  7. Docker简介以及操作

    Docker 简介 Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目.它基于 Google 公司推出的 Go 语言实现. 项目后来加入了 Linu ...

  8. Docker简介以及安装

    Docker简介以及安装 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是容器 1.一种虚拟化方案 与传统的虚拟机不同,传统的虚拟机是通过中间层将一台或多台独立的机器虚拟运 ...

  9. Docker简介与安装配置

    目录 Docker简介 什么是Docker 为啥要用容器 Docker Engine Docker架构说明 Docker安装 Docker版本介绍 Ubuntu安装docker-ce CentOS7安 ...

随机推荐

  1. Java9都快发布了,Java8的十大新特性你了解多少呢?

    Java 9预计将于今年9月份发布,这是否会是一次里程碑式的版本,我们拭目以待.今天,我们先来复习一下2014年发布的Java 8的十大新特性. Java 8可谓是自Java 5以来最具革命性的版本了 ...

  2. Java中在特定区间产生随机数

    生成指定范围内的随机数 这个是最常用的技术之一.程序员希望通过随机数的方式来处理众多的业务逻辑,测试过程中也希望通过随机数的方式生成包含大量数字的测试用例.问题往往类似于: 如何随机生成 1~100 ...

  3. C++学习1-(C语言基础、VS快捷键)

    C语言基础复习 1.三码 正数: 3码合1 ,正数的反码/补码就是其本身 负数: 原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值 原码:11010101 负数的反码是在其原码的基础上 ...

  4. 关于MySQL 8.0的几个重点【转】

    转自 关于MySQL .0的几个重点,都在这里 https://mp.weixin.qq.com/s/QUpk9uuS2JTli1GT6HuORA 一.关于MySQL Server的改进 1.1 re ...

  5. 使用C#进行应用程序间通信(WPF与Unity通信)

    首先程序主体来自网络,我只是应用在我自己的项目中,其中出现了一系列的问题,有些已经解决,有些使用了折中的方案,如果有大神能够给予知道,感激不尽! 首先是发送端程序: 这是我的程序任务执行主界面,此处已 ...

  6. 【转】OpenCV对图片中的RotatedRect进行填充

    函数名:full_rotated_rect 函数参数: image输入图像,rect希望在图像中填充的RotatedRect,color填充的颜色 主要的思路是:先找到RotatedRect的四个顶点 ...

  7. CSS的vertical-align

    转载自https://blog.csdn.net/FE_dev/article/details/75948659 说明 vertical-align属性,是CSS属性中一个比较重要的属性,也是比较不好 ...

  8. MACE(3)-----工程化

    作者:十岁的小男孩 QQ:929994365 能下者,上. 前言 本文是MACE的第三步即MACE环境编译出来的库在Android工程中的使用.在第一篇博文中通过mace官方提供的安卓工程进行调试,本 ...

  9. web----Twisted

    Twisted模块: Twisted是一个事件驱动的网络框架,其中包含了诸多功能,例如:网络协议.线程.数据库管理.网络操作.电子邮件等.

  10. poj2352树状数组解决偏序问题

    树状数组解决这种偏序问题是很厉害的! /* 输入按照y递增,对于第i颗星星,它的level就是之前出现过的星星中,横坐标小于i的总数 */ #include<iostream> #incl ...