1、Docker 简介
Docker 是 PaaS 提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎,源代码托管在 Github 上, 基于go语言并遵从Apache2.0协议开源。
Docker自2013年以来非常火热,无论是从 github 上的代码活跃度,还是Redhat在RHEL6.5中集成对Docker的支持, 就连 Google 的 Compute Engine 也支持 docker 在其之上运行。
2、Docker 架构
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。
Docker采用 C/S架构 Docker daemon 作为服务端接受来自客户的请求,并处理这些请求(创建、运行、分发容器)。 客户端和服务端既可以运行在一个机器上,也可通过 socket 或者RESTful API 来进行通信。
3、Docker 特点
1)Docker能够通过容器提供更小的操作系统占用空间来减少开发规模。
2)有了容器,跨不同单元的团队(如开发、QA和运维)更容易跨应用程序无缝地工作。
3)可以在任何地方部署Docker容器,在任何物理和虚拟机上,甚至在云上。
4)由于Docker容器非常轻量级,所以它们很容易伸缩。
4、Docker 组件
1)Docker for Mac
可以在Mac 操作系统上运行Docker容器。
2)Docker for Linux
可以在Linux操作系统上运行Docker容器。
3)Docker for Windows
可以在Windows操作系统上运行Docker容器。
4)Docker Engine
用于构建Docker镜像和创建Docker容器。
5)Docker Hub
Docker Hub是一个基于云的存储库,Docker用户和合作伙伴可在其中创建,测试,存储和分发容器镜像。
6)Docker Compose
用于定义使用多个Docker容器的应用程序。
5、Docker 安全性
为了保证容器内应用程序能够隔离运行并且保证安全性。Docker使用了多种安全机制以及隔离措施。包括Namespace,Cgroup,Capability限制,内核强访问控制等等。
Docker 安全性的重点在于防止内核代码执行与防止对Docker守护进程的攻击。对于看重Docker的用户,可以在默认Docker安全的基础上采用如下办法提高Docker的安全性。
1)使用安全可靠的Linux内核并保持安全补丁的更新
2)使用非root权限运行docker守护进程
3)使用selinux或者APPArmor等对Docker守护进程的权限进行限制
4)在其它基于虚拟化的容器中运行Docker容器
Docker被逃逸的风险并不会比使用其它基于虚拟化实现的容器大,二者的攻击面和攻击手段差距极大。相对的,由于没有虚拟化导致的性能损失,Docker在性能方面对比虚拟化容器有极大的优势。由于Docker在运行过程中几乎不会有额外的性能开销,在非常重视安全的场景中。使用Docker容器和虚拟化容器的双层容器保护也是很常见的解决方案。