• Docker技术使用场景主要特性等相关资源整理
  • OpenStack与Docker集成:使用openstack管理docker
  • Docker的隔离性和安全性问题
  • docker使用的技术之Container内核原理介绍
  • Docker详细的应用与实践架构举例说明
  • ​基于Docker的大数据开发实践
  • ​docker之轻量虚拟化技术——docker实战分享
  • 什么是docker?Docker技术详细介绍
  • 基于Docker容器的云计算平台搭建实战
  • docker和VM虚拟机的区别以及如何用docker搭建基础设施
  • ​Docker容器术语以及docker的特点
  • Docker & Docker Hub
  • Introduction to Swarm, a Docker-native clustering system
  • Docker、Kubernetes、Neutron中的网络简介
  • ​James Turnbull:《The Docker Book》
  • Docker on AWS:Running Containers in the Cloud
  • Introduction docker Container Security
  • docker应用之利用Docker构建自动化运维
  • Docker基本原理简介和详细安装步骤介绍
  • Docker 基础用法和常用命令及选项介绍
  • Docker 端口映射,端口绑定操作介绍
  • Docker 四种网络模式及网络配置详细介绍
  • docker下通过Dockerfile指令构建镜像的指令选项介绍
  • ​Docker 容器数据管理,链接容器,构建私有库
  • Docker容器分析----好处和缺点介绍
  • 如何实现 coreos 下Docker 与分布式数据库结合
  • 应对 Docker 网络功能难题的挑战与思考
  • Docker着手将容器部署到私有云与公有云
  • 为现在和未来改善Docker安全
  • Docker容器与企业存储的结合思考
  • Docker监控以及cAdvisor和Prometheus监控工具的对比
  • ​有关Docker的八个令人难以置信的事实
  • ​部署 Docker 前必须问自己的四个问题
  • 程序猿,千万别说你不了解Docker!
  • 将要改变IT世界的的docker技术是什么?
  • Docker支持更深入的容器日志分析
  • Docker宣布支持Windows 10和Azure Windows Server
  • Docker 1.12.0到底有哪些不同之处
  • 云计算之Docker容器技术如何落地?
  • Docker v1.12.0-rc5 普通版实验版本下载,高级容器引擎
  • 针对Docker容器的监控指标
  • ​Docker 的步伐:DevOps 与 OS 化
  • 八个问题帮你快速了解Docker
  • ​什么是Docker以及docker的 诞生技术演进
  • ​Docker v1.12.1-rc1各种版本发布下载,高级容器引擎
  • ​Docker 1.12.0 改进了服务的负载均衡参数
  • Windows下Docker应用部署相关问题详解
  • Docker1.12 引擎使用体验 ​
  • Docker官方镜像将会使用Alpine Linux替换Ubuntu
  • ​Windows Server 2016提供Docker原生运行的企业级支持
  • ​传统应用的docker化迁移
  • Docker携手Windows Server
  • Docker扁平化网络设计与实现
  • Plesk 中操作和设置 Docker 容器
  • 如何通过 Docker 在 Linux 上托管 .NET Core
  • Docker 1.12.4应用容器引擎发布及下载地址
  • Docker v1.13.0 应用容器引擎正式版发布及下载地址
  • docker源码分析之容器日志处理与log-driver实现
  • 如何在win7,win8下面启动docker
  • win7,win8安装Docker具体过程
  • win7, win8安装docker需要了解的概念
  • win7,win8安装docker的依赖条件
  • Docker Toolbox 介绍
  • Arch下面安装启动及删除docker介绍
  • Debian 7(Wheezy)下面如何安装docker
  • Debian 8(Jessie )下面如何安装docker
  • 红帽RHEL下如何删除docker详细步骤介绍
  • 红帽RHEL下面设置docker服务自动启动
  • linux下不使用sudo命令执行docker的操作步骤
  • 红帽redhat下通过脚本和yum安装docker容器引擎的详细步骤
  • 红帽RHEL下安装docker依赖性检查
  • Ubuntu Vivid 15.04 下面安装docker的详细步骤
  • Ubuntu Trusty 14.04 (LTS) 下面安装docker及依赖关系检查
  • Ubuntu Raring 13.04 和 Saucy 13.10 (64 bit)下面安装docker
  • Ubuntu Precise 12.04 (LTS) (64-bit)下面安装docker
  • Docker支持的安装方式
  • 通过docker ps命令检查运行中的docker镜像
  • 关于docker入门教程
  • 通过docker search命令搜索可用docker镜像
  • 在docker容器中运行hello world!
  • 在docker容器中通过apt-get安装新的程序
  • 通过docker commit命令保存对docker容器的修改
  • 通过docker run命令运行新的docker镜像
  • 准备学习docker: docker version命令查看版本
  • 什么是Docker?Docker通常用于如下场景
  •  
    当前位置:  教程>docker中文入门学习手册

    Docker技术使用场景主要特性等相关资源整理

     
    分享到:
        发布时间:2017-2-20  


        本文导语: Docker相关资源简单整理摘要:Docker相关资源简单整理。介绍Docker的基本信息概要、使用场景、主要特征以及主要应用介绍。Docker相关资源简单整理一、信息概要Docker是由PaaS提供商dotCloud在2013年创建的一款开源应用引擎,Docker可...

    Docker相关资源简单整理

    摘要:Docker相关资源简单整理。介绍Docker的基本信息概要、使用场景、主要特征以及主要应用介绍。


    Docker相关资源简单整理


    一、信息概要

    • Docker是由PaaS提供商dotCloud2013年创建的一款开源应用引擎,Docker可以自动将任何应用打包成轻量、可移植、自包涵的容器引擎。开发者构建的应用可以一次构建全平台运行,包括本地开发机器、生产环境虚拟机和云等。

    • Docker是一种增加了高级APILinuX ContainerLXC技术,提供了能够独立运行Unix进程的轻量级虚拟化解决方案。它提供了一种在安全、可重复的环境中自动部署软件的方式。

    • Docker 使用 Go 语言编写,用 cgroupnamespacing实现资源隔离,支持写时复制特性的AUFS文件系统

    • Docker虽然并不成熟,但是已然获得众多认可,同时这也是未使用虚拟化系统的一大发展趋势,一个非常老道的方法,用户将应用程序从底层系统分离,然后获得很高的灵活性。

    • Docker的container(轻量级虚拟化技术,OS层虚拟化技术)比服务器虚拟化来的更加简单,并且需要更少的软件。

    • 一个虚机占用的资源比一个Container占用的资源不止多十倍。在一个物理机上开一百个虚机是很困难的,但要实现100多个,甚至几百个Container是很正常的。

    • 浏览器沙箱从资源隔离的角度,以及JavaJ2EE Container从标准抽象化的角度,其实跟Container的概念是一致的。

    二、使用场景

    1. 简化配置

    这是Docker公司宣传的Docker的主要使用场景。虚拟机的最大好处是能在你的硬件设施上运行各种配置不一样的平台(软件、系统),Docker在降低额外开销的情况下提供了同样的功能。它能让你将运行环境和配置放在代码中然后部署,同一个Docker的配置可以在不同的环境中使用,这样就降低了硬件要求和应用环境之间耦合度。

    2. 代码流水线(Code Pipeline管理

    一个场景对于管理代码的流水线起到了很大的帮助。代码从开发者的机器到最终在生产环境上的部署,需要经过很多的中间环境。而每一个中间环境都有自己微小的差别,Docker给应用提供了一个从开发到上线均一致的环境,让代码的流水线变得简单不少。

    3. 提高开发效率

    这就带来了一些额外的好处:Docker能提升开发者的开发效率。如果你想看一个详细一点的例子,可以参考Aater在DevOpsDays Austin 2014 大会或者是DockerCon上的演讲。不同的开发环境中,我们都想把两件事做好。一是我们想让开发环境尽量贴近生产环境,二是我们想快速搭建开发环境。理想状态中,要达到第一个目标,我们需要将每一个服务都跑在独立的虚拟机中以便监控生产环境中服务的运行状态。然而,我们却不想每次都需要网络连接,每次重新编译的时候远程连接上去特别麻烦。这就是Docker做的特别好的地方,开发环境的机器通常内存比较小,之前使用虚拟的时候,我们经常需要为开发环境的机器加内存,而现在Docker可以轻易的让几十个服务在Docker中跑起来。

    4. 隔离应用

    有很多种原因会让你选择在一个机器上运行不同的应用,比如之前提到的提高开发效率的场景等。

    我们经常需要考虑两点,一是因为要降低成本而进行服务器整合,二是将一个整体式的应用拆分成松耦合的单个服务(译者注:微服务架构)。如果你想了解为什么松耦合的应用这么重要,请参考Steve Yege的这篇论文,文中将Google亚马逊做了比较。

    5. 整合服务器

    正如通过虚拟机来整合多个应用,Docker隔离应用的能力使得Docker可以整合多个服务器以降低成本。由于没有多个操作系统的内存占用,以及能在多个实例之间共享没有使用的内存,Docker可以比虚拟机提供更好的服务器整合解决方案。

    6. 调试能力Docker

    提供了很多的工具,这些工具不一定只是针对容器,但是却适用于容器。它们提供了很多的功能,包括可以为容器设置检查点、设置版本和查看两个容器之间的差别,这些特性可以帮助调试Bug。你可以在《Docker拯救世界》的文章中找到这一点的例证。

    7. 多租户环境

    另外一个Docker有意思的使用场景是在多租户的应用中,它可以避免关键应用的重写。我们一个特别的关于这个场景的例子是为IoT(译者注:物联网)的应用开发一个快速、易用的多租户环境。这种多租户的基本代码非常复杂,很难处理,重新规划这样一个应用不但消耗时间,也浪费金钱。

    使用Docker,可以为每一个租户的应用层的多个实例创建隔离的环境,这不仅简单而且成本低廉,当然这一切得益于Docker环境的启动速度和其高效diff命令。

    8. 快速部署

    在虚拟机之前,引入新的硬件资源需要消耗几天的时间。Docker的虚拟化技术将这个时间降到了几分钟,Docker只是创建一个容器进程而无需启动操作系统,这个过程只需要秒级的时间。这正是Google和Facebook都看重的特性。


    三、主要特性

    • 文件系统隔离:每个进程容器运行在完全独立的根文件系统里。

    • 资源隔离:可以使用cgroup为每个进程容器分配不同的系统资源,例如CPU和内存。

    • 网络隔离:每个进程容器运行在自己的网络命名空间里,拥有自己的虚拟接口IP地址

    • 写时复制:采用写时复制方式创建根文件系统,这让部署变得极其快捷,并且节省内存和硬盘空间。

    • 日志记录:Docker将会收集和记录每个进程容器的标准流(stdout/stderr/stdin),用于实时检索或批量检索。

    • 变更管理:容器文件系统的变更可以提交到新的映像中,并可重复使用以创建更多的容器。无需使用模板或手动配置。

    • 交互式Shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次性交互shell。

    如果 Linux kernel 是 3.8 以前的内核,或者内核缺少 aufs 模块需要安装额外的扩展模块:
         $ sudo apt-get install linux-image-extra-`uname -r`


    安装 lxc-docker

         $ sudo apt-get install software-properties-common
         $ sudo add-apt-repository ppa:dotcloud/lxc-docker
         $ sudo apt-get update
         $ sudo apt-get install lxc-docker

    运行一个简单系统
         运行 docker 就会自动下载一个 ubuntu 镜像第一次运行才需要下载),并在一个 container(容器)里运行一个 ubuntu 系统(类似虚拟机)和 shell:
         $ docker run -i -t ubuntu /bin/bash

    Hello World
         $ docker run -i -t ubuntu echo hello world

    四、相关技术

    1.LXC
    Linux cgroups是一种进程资源隔离的技术,namespace是进程的网络资源隔离的技术,它们合在一块也就有了lxc项目,所以从理论上讲,lxc会比kvm性能高得多。因为lxc的每个虚机就是host操作系统的每一个隔离后的进程,并且这些进程是由host操作系统调度的,性能和host操作系统相差不会太多。唯一的缺点是lxc的隔离性不会很好,例如host机器用什么操作系统,lxc也是什么操作系统,再如在lxc中,host操作系统上的root用户可以操纵每一个lxc的虚机。当然,对于私有云,隔离性相比性能倒是其次的,是可以一用的。
    最近Linux内核对LXC相关改进非常多,其中3.8版对Namespace新增了user,未来的3.11会加入更好的 CRIU支持,使得Container看上去可能更像一个虚拟机。
    和虚机相比,LXC的隔离做个并不彻底,而包括热迁移的等高级功能也正在完善中。

    2.aufs
    一种“增量文件系统”,用户所做修改以增量的方式保存,决定了其分层存储特性。
    是一个叫岡島的日本人开发的联合文件系统,用来把原本分离的两个文件系统联合在一起。它是Debian Linux一个内核驱动,其它的 Linux 发行版往往是没有 aufs 驱动的。


    五、应用介绍
    1.docker desktop  已安装firfox以及libreoffice,通过novnc可实现web版的远程桌面

    2.DockerUI Web版Docker管理工具

    3.dokku  100行BASH的微Heroku。包含了一个PaaS的基本功能shipyard Docker管理界面,提供多Host,创建Container,查看Image等功能

    4.CoreOS

    CoreOS项目是Google ChromeOS代码的一个fork版本,目前已成为一个超级精简的服务器操作系统,进化速度堪比ChromeOS。
    CoreOS的思想是成为一个随时可被替换的操作系统,甚至在这个替换的过程中,应用程序的运行不会被打断。
    CoreOS利用linux cgroups技术来无缝的升级。CoreOS有两个root分区,在另一个cgroups上升级好,然后再切换过去。被更新的机器不需要从负载集群中移除。同时,为了保证其它应用程序不被打断,CoreOS会通过Linux cgroups限制更新过程中的硬盘和网络I/O。
    在CoreOS中,所有应用程序都被装在一个个“集装箱(Container)”中,这些集装箱就像一个个软件代码的小气泡,通过最简单的接口运行在操作系统之上。这意味着你可以很轻松得将应用程序在操作系统和计算机之间转移,就像是在轮船和火车上搬运箱子一样,同时也意味着可以在不中断应用程序的情况下更新操作系统。
    etcd 是一个高可用Key/Value 存储系统,主要用于分享配置和服务发现。CoreOS RAM Usage 161 MB

    CoreOS宣称最小化的定制版linux系统,具有:
    Linux内核,Linux运行所需
    存在两个ROOT分区,一个被用作启动分区,一个被用作更新分区 
    更新分区在更新完成后,自动重新启动系统,当前机器不需要从负载集群中移除,为了保证其它应用程序不被打断,会通过Linux cgroup限制更新过程中的磁盘、网络等IO使用。
    systemd,作为默认系统和服务管理器,其优秀特性:
            ①.支持并行化任务;
            ②.同时采用 socket 式与 D-Bus 总线式激活服务;
            ③.按需启动守护进程daemon);
            ④.利用 Linux 的 cgroups 监视进程;
            ⑤.支持快照和系统恢复;
            ⑥.维护挂载点和自动挂载点;
            ⑦.各服务间基于依赖关系进行精密控制。
            ⑧.root分区被设计成只读,用以保证数据的一致性和更新可用
    CPU、IO等资源隔离,自然要祭出容器(Container)来,CoreOS很明智使用Docker作为容器管理器用以构建、发布应用,从这个层面来看,一个应用其实就是一个容器。
    etcd组件负责服务发现和配置共享,采用Raft分布式一致性协议算法,承担起,组件之间服务通信使用。很自然的,容器(Container)之间应用、服务的伸缩,就显得很简单了。其基因层面支持集群特性,当然,你也可以解读为云环境的支持。

    5.Google Coder 是Google 团队的一个为 Raspberry Pi 而设的实验程式,目的是将 Raspberry Pi 变成一个简单的个人小型网络伺服器,提供一个网上环境给程式员在 Chrome 中编写一些有关 HTMLCSSJavascript 的东西,其可以搭载一些基本的 web app。不过它有一个更伟大的理念,就是让初学者有一个基础环境去一边学习一边编写程式 demo 密码:Kortide2014


    6.相关链接

    Docker:集装箱式“运输”在软件上的实现
    超越Google,他企图将整个互联网塞进1台电脑
    Docker能够运行任何应用的“PaaS”云 
    使用 Docker/LXC 迅速启动一个桌面系统
    Docker:具备一致性的自动化软件部署
    PaaS乱局:Container的新机遇
    Linux黑客车库创业:服务器操作系统CoreOS颠覆互联网
    服务器操作系统CoreOS初体验
    android development environment for ubuntu precise (12.04 lts)
    LXC on Android - YouTube
    Start using Docker
    Docker on Raspberry Pi
    resin/rpi-google-coder coder
    搭建自己的 Docker 私有仓库服务
    dockerbook 
    where-can-you-use-golang 



      您可能感兴趣的文章:

    • 本站(WWW.169IT.COM)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
      本站(WWW.169IT.COM)站内文章除注明原创外,均为转载,整理或搜集自网络.欢迎任何形式的转载,转载请注明出处.
      转载请注明:文章转载自:[169IT-IT技术资讯]
      本文标题:Docker技术使用场景主要特性等相关资源整理
    相关文章推荐:


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2017,169IT.COM,E-mail:www_169it_com#163.com(请将#改为@)

    浙ICP备11055608号