【Docker】Docker的确保环境安全,Docker部署安全性,Sandbox,PaaS,Open Solution,Open Solution,Docker Datacenter的详解

作者简介: 辭七七,目前大一,正在学习C/C++,Java,Python等
作者主页: 七七的个人主页
文章收录专栏: 七七的闲谈
欢迎大家点赞 收藏 ⭐ 加关注哦!

在这里插入图片描述

前言

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。


docker

  • 确保环境安全
  • Docker部署安全性
  • Sandbox
  • PaaS
  • Open Solution
  • Docker Datacenter

确保环境安全

Docker十分火热,很多人表示很少见如此能够吸引行业兴趣的新兴技术。然而,当兴奋转化为实际部署时,企业需要注意Docker的安全性。了解Docker的人都知道,Docker利用容器将资源进行有效隔离。

因此容器相当于与Linux OS和hypervisor有着几乎相同的安全运行管理和配置管理级别。但当涉及到安全运营与管理,以及具有保密性、完整性和可用性的通用控件的支持时,Docker可能会让人失望。当容器运行在本地系统上时,企业可以通过其安全规则确保安全性。但一旦容器运行在云端,事实就不会如此简单了。当Docker运行在云提供商平台上时,安全性变得更加复杂。需要知道云提供商正在做什么,或许用户正在与别人共享一台机器。虽然容器没有内置的安全因素,而且像Docker这样的新兴技术很难有比较全面的安全措施,但这并不意味着以后也不会出现。

Docker部署安全性

也有专家将Docker安全问题的实质定位于配置安全,认为Docker的问题是很难配置一个安全的容器。虽然Docker的开发人员通过创建非常小的容器来降低攻击面,但问题在于大型企业内部在生产环境中运行Docker容器的员工需要有更多的可见性和可控性。

专家认为,大约90%的外部网络攻击并不是超级复杂的,攻击者多是利用了管理员的行为漏洞,比如配置错误或者未及时安装补丁。因此,企业在部署数千或数万台容器时,能够确保这些容器都遵守企业安全策略进行配置是至关重要的事情。为解决这个问题,就需要增加Docker容器部署的实时可见性,同时实施企业制定的安全策略。【Docker】Docker的确保环境安全,Docker部署安全性,Sandbox,PaaS,Open Solution,Open Solution,Docker Datacenter的详解_第1张图片

Sandbox

作为sandbox大概是container的最基本想法了 - 轻量级的隔离机制, 快速重建和销毁, 占用资源少。
用docker在开发者的单机环境下模拟分布式软件部署和调试,可谓又快又好。同时docker提供的版本控制和image机制以及远程image管理,可以构建类似git的分布式开发环境。
可以看到用于构建多平台image的packer以及同一作者的vagrant已经在这方面有所尝试了,笔者会后续的blog中介绍这两款来自同一geek的精致小巧的工具。

PaaS

【Docker】Docker的确保环境安全,Docker部署安全性,Sandbox,PaaS,Open Solution,Open Solution,Docker Datacenter的详解_第2张图片

dotcloud、heroku以及cloudfoundry都试图通过container来隔离提供给用户的runtime和service,只不过dotcloud采用docker,heroku采用LXC,cloudfoundry采用自己开发的基于cgroup的warden。基于轻量级的隔离机制提供给用户PaaS服务是比较常见的做法
- PaaS 提供给用户的并不是OS而是runtime+service,因此OS级别的隔离机制向用户屏蔽的细节已经足够。而docker的很多分析文章提到『能够运行任何应用的“PaaS”云』只是从image的角度说明docker可以从通过构建
image实现用户app的打包以及标准服务service image的复用,而非常见的buildpack的方式。

由于对Cloud Foundry和docker的了解,接下来谈谈笔者对PaaS的认识。PaaS号称的platform一直以来都被当做一组多语言的runtime和一组常用的middleware,提供这两样东西
即可被认为是一个满足需求的PaaS。然而PaaS对能部署在其上的应用要求很高:

  • 运行环境要简单 - buildpack虽然用于解决类似问题,但仍然不是很理想
  • 要尽可能的使用service - 常用的

mysql, apache

倒能理解,但是类似log之类的如果也要用service就让用户接入PaaS平台,让用户难以维护

  • 要尽可能的使用"平台” - 单机环境构建出目标PaaS上运行的实际环境比较困难,开发测试工作都离不开"平台”
  • 缺少可定制性 - 可选的中间件有限,难于调优和debug。

综上所述部署在PaaS上的应用几乎不具有从老平台迁移到之上的可能,新应用也难以进入参数调优这种深入的工作。个人理解还是适合快速原型的展现,和短期应用的尝试。

然而docker确实从另一个角度(类似IaaS+orchestration tools)实现了用户运行环境的控制和管理,然而又基于轻量级的LXC机制,确实是一个了不起的尝试。笔者也认为IaaS + 灵活的orchestration tools(深入到app层面的管理 如bosh)是交付用户环境最好的方式。

国内也已经开始出现基于Docker的PaaS。2015年3月11日,云雀Alauda云平台正式开启内测,对外提供基于Docker的PaaS服务。

Open Solution

【Docker】Docker的确保环境安全,Docker部署安全性,Sandbox,PaaS,Open Solution,Open Solution,Docker Datacenter的详解_第3张图片

前文也提到docker存在disk/network不便限额和在较低版本kernel中(如RHEL的2.6.32)AUFS不支持的问题。

disk/network quota

虽然cgroup提供IOPS之类的限制机制,但是从限制用户能使用的磁盘大小和网络带宽上还是非常有限的。
Disk/network的quota有两种思路:

  • 通过docker run -v命令将外部存储mount到container的目录下,quota从Host方向限制,在device mapper driver中更采用实际的device因此更好控制。
  • 通过使用disk quota来限制AUFS的可操作文件大小。类似cloud foundry warden的方法, 维护一个UID池,每次创建container都从中取一个user name, 在container里和Host上用这个username创建用户,在Host上用setquota限制该username的UID的disk. 网络上由于docker采用veth的方式,可以采用tc来控制host上的veth的设备。

RHEL 6.5
这里简单介绍下device mapper driver的思路:
docker的dirver要利用snapshot机制,起初的fs是一个空的ext4的目录,然后写入每个layer。每次创建image其实就是对其父image/base image进行snapshot,
然后在此snapshot上的操作都会被记录在fs的metadata中和AUFS layer,docker commit将 diff信息在parent image上执行一遍.
这样创建出来的image就可以同当前container的运行环境分离开独立保存了。

Docker Datacenter

Docker Datacenter将五个之前独立的产品组合在一起,使用统一的Docker管理接口:管理用的Universal Control Plane;安全方面的Content Trust;编排用的Swarm;容器运行时的Engine;以及Trusted Registry。

目标是填补两处空白,一处是使用Docker在开发、测试、质量保证和生产环境间打包应用,另一处是容器管理还不直接的传统IT运维。

关于【Docker】Docker的确保环境安全,Docker部署安全性,Sandbox,PaaS,Open Solution,Open Solution,Docker Datacenter的详解,七七就先分享到这里了,如果你认为这篇文章对你有帮助,请给七七点个赞吧,如果发现什么问题,欢迎评论区留言!!

你可能感兴趣的:(七七的闲谈,docker,安全,paas,eclipse,开发语言)