🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 序言 ![](https://img.kancloud.cn/60/62/60625e20c6d31072da885e0b44f5b3f7_480x270.png) > #### 手册阅读须知:本手册仅针对Docker部署版本(使用左右键(`<-- 和 -->`)翻页阅读) * * * # Docker——使用说明 ![](https://img.kancloud.cn/a7/37/a7378ab56c7b357966ecc6a52bd6b13e_200x132.png) ### V1.0版本由[看云](https://www.kancloud.cn/)独家赞助发布 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的[镜像](https://baike.baidu.com/item/%E9%95%9C%E5%83%8F/1574?fromModule=lemma_inlink)中,然后发布到任何流行的[Linux](https://baike.baidu.com/item/Linux?fromModule=lemma_inlink)或[Windows](https://baike.baidu.com/item/Windows/165458?fromModule=lemma_inlink)操作系统的机器上,也可以实现[虚拟化](https://baike.baidu.com/item/%E8%99%9A%E6%8B%9F%E5%8C%96/547949?fromModule=lemma_inlink)。容器是完全使用[沙箱](https://baike.baidu.com/item/%E6%B2%99%E7%AE%B1/393318?fromModule=lemma_inlink)机制,相互之间不会有任何接口。 > Docker是基于Go语言实现的云开源项目,Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次镜像,处处运行”。 ## 主要特性: > ### **`Docker的网站上提到了docker的典型场景`**: * Automating the packaging and deployment of applications(使应用的打包与部署自动化) * Creation of lightweight, private PAAS environments(创建轻量、私密的PAAS环境) * Automated testing and continuous integration/deployment(实现自动化测试和持续的集成/部署) * Deploying and scaling web apps, databases and backend services(部署与扩展webapp、数据库和后台服务) 由于其基于LXC的轻量级虚拟化的特点,docker相比KVM之类最明显的特点就是启动快,资源占用小。因此对于构建隔离的标准化的运行环境,轻量级的PaaS(如dokku), 构建自动化测试和持续集成环境,以及一切可以横向扩展的应用(尤其是需要快速启停来应对峰谷的web应用)。 1. 构建标准化的运行环境,现有的方案大多是在一个baseOS上运行一套puppet/chef,或者一个image文件,其缺点是前者需要base OS许多前提条件,后者几乎不可以修改(因为copy on write 的文件格式在运行时rootfs是read only的)。并且后者文件体积大,环境管理和版本控制本身也是一个问题。 2. PaaS环境是不言而喻的,其设计之初和dotcloud的案例都是将其作为PaaS产品的环境基础 3. 因为其标准化构建方法(buildfile)和良好的REST API,自动化测试和持续集成/部署能够很好的集成进来 4. 因为LXC轻量级的特点,其启动快,而且docker能够只加载每个container变化的部分,这样资源占用小,能够在单机环境下与KVM之类的虚拟化方案相比能够更加快速和占用更少资源 > ### **`Docker原理`**: Docker核心解决的问题是利用LXC来实现类似VM的功能,从而利用更加节省的硬件资源提供给用户更多的计算资源。同VM的方式不同,[LXC](https://baike.baidu.com/item/LXC?fromModule=lemma_inlink)其并不是一套硬件虚拟化方法 - 无法归属到全虚拟化、部分虚拟化和半虚拟化中的任意一个,而是一个操作系统级虚拟化方法, 理解起来可能并不像VM那样直观。所以我们从虚拟化到docker要解决的问题出发,看看他是怎么满足用户虚拟化需求的。 > ### **`Docker部署安全性`**: 也有专家将Docker安全问题的实质定位于配置安全,认为Docker的问题是很难配置一个安全的容器。<br><br>虽然Docker的开发人员通过创建非常小的容器来降低攻击面,但问题在于大型企业内部在生产环境中运行Docker容器的员工需要有更多的可见性和可控性。<br> 专家认为,大约90%的外部网络攻击并不是超级复杂的,攻击者多是利用了管理员的行为漏洞,比如配置错误或者未及时安装补丁。<br> 因此,企业在部署数千或数万台容器时,能够确保这些容器都遵守企业安全策略进行配置是至关重要的事情。<br> 为解决这个问题,就需要增加Docker容器部署的实时可见性,同时实施企业制定的安全策略。 > ### **`Docker安全中心`**: 在新的功能中有硬件的部分,可以 跨任何基础架构,允许开发和随后的升级中的数字编码签名。构建在Docker Trust框架之上用来进行镜像发布者认证,同时进行新的镜像扫描和官方漏洞检测,以便能够更好地理解容器内部是什么。<br><br> 命名空间是本周发布的另外一个Docker安全升级。允许IT运用来为基于用户群组的容器指派授权,约束了主机的访问根源,并指定了系统管理员,限制了群组对于指定服务的访问。<br><br> 镜像扫描对于Docker Hub上的所有官方版本都可用,同时命名空间和硬件签名则在Docker的实验渠道提供。<br><br> 安全问题仍旧是容器采纳要解决的最大问题,尤其是如果大量容器是便携的,IDC研究经理Larry Carvalho说道。通过硬件解决这个问题很明智,因为这样更难以介入,并且提供了未来可能被使用的大量容器的效率。<br><br> Carvhalho说:“他们还应该解决的一个问题是容量,你没有办法在软件层面做大量的安全,因为要有很多开支。”