当前位置:   article > 正文

Docker基础概述(一)_docker对disk的管理比较有限

docker对disk的管理比较有限

概述

DockerDocker是美国几个年轻人创建了一个公司dotCloud,做一些关于Paas的云计算服务和LXC有关的容器技术,Docker开发与2010年,2013 年开源火起来,2014年出版第一版docker1.0版本,Docker 是一个开源容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,也就是常说的隔离机制,值得一提的是Docker是go语言开发的
一个完整的Docker有以下几个部分组成:

  • DockerClient客户端
  • Docker Daemon守护进程
  • Docker Image镜像
  • DockerContainer容器

特性

  • docker相比KVM之类最明显的特点就是启动快,资源占用小。

  • 构建隔离的标准化的运行环境,轻量级的PaaS(如dokku), 构建自动化测试和持续集成环境,以及一切可以横向扩展的应用(尤其是需要快速启停来应对峰谷的web应用)。

  • 构建标准化的运行环境,现有的方案大多是在一个baseOS上运行一套puppet/chef,或者一个image文件,其缺点是前者需要base OS许多前提条件,后者几乎不可以修改(因为copy on write 的文件格式在运行时rootfs是read only的)。并且后者文件体积大,环境管理和版本控制本身也是一个问题。

  • 标准化构建方法(buildfile)和良好的REST API,自动化测试和持续集成/部署能够很好的集成进来

局限

Docker并不是全能的,设计之初也不是KVM之类虚拟化手段的替代品,简单总结几点:
Docker是基于Linux 64bit的,无法在32bit的linux/Windows/unix环境下使用
LXC是基于cgroup等linux kernel功能的,因此container的guest系统只能是linux base的
隔离性相比KVM之类的虚拟化方案还是有些欠缺,所有container公用一部分的运行库
网络管理相对简单,主要是基于namespace隔离
cgroup的cpu和cpuset提供的cpu功能相比KVM的等虚拟化方案相比难以度量(所以dotcloud主要是按内存收费)
Docker对disk的管理比较有限
container随着用户进程的停止而销毁,container中的log等用户数据不便收集

传统虚拟化技术与Docker对比

比较Docker 容器Vm虚拟机
操作系统与主机共享OS宿主机OS上运行虚拟机OS
存储大小镜像小,便于存储和运输镜像庞大
运行性能几乎无额外性能损失操作系统额外的cpu,内存消耗
移植性轻便,灵活,适应linux笨重,与虚拟化技术耦合度高
部署速度快速,秒级较慢
隔离级别进程之间的隔离操作系统之间的隔离
安全性低于vm虚拟机高于Docker容器
硬件亲和性面向软件开发者面向硬件开发者

为什么Docker比VM更快

(1)docker有着比虚拟机更少的抽象层。
docker不需要Hypervisor实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上、docker有明显优势。

(2)docker利用的是宿主机的内核,而不需要 宿主机OS。 新建一个docker容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。避免引寻、加载操作系统内核等比较费时费资源的过程;新建一个VM虚拟机时,虚拟机软件需要加载 宿主机OS,整个新建过程是分钟级别的。而docker由于直接利用宿主机的OS,则省略了返个过程,新建一个docker容器只需要几秒钟。

Docker技术的缺点:

  • Docker容器还没有任何形式的硬件隔离,因此它们容易受到攻击。
  • 1.资源隔离方面不如虚拟机,docker是利用cgroup实现资源限制的,只能限制资源消耗的最大值,而不能隔绝其他程序占用自己的资源。
  • 2.安全性问题。docker目前并不能分辨具体执行指令的用户,只要一个用户拥有执行docker的权限,那么他就可以对docker的容器进行所有操作,不管该容器是否是由该用户创建。比如A和B都拥有执行docker的权限,由于docker的server端并不会具体判断docker cline是由哪个用户发起的,A可以删除B创建的容器,存在一定的安全风险。
  • 3.docker目前还在版本的快速更新中,细节功能调整比较大。一些核心模块依赖于高版本内核,存在版本兼容问题

Docker容器的优点

    1. DevOps(开发.运维)

传统方式: 一堆的帮助文档,安装程序

Docker: 打包镜像文件发布测试,一键运行

  • 2.更快捷的升级和扩容

使用Docker之后,我们部署应用就和搭积木一样

项目打包成一个镜像文件,扩展,服务器A!

  • 3.更快捷的运维

在容器技术之后,开发运维环境一致

    1. 更高效的计算机资源利用

Docker是内核级别的虚拟化技术,可以吧计算机的资源利用到极致

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/73937
推荐阅读
相关标签
  

闽ICP备14008679号