我们知道docker run命令可以用来运行容器。那运行这个命令后,Docker做了哪些具体的工作呢?具体如下:
- docker run命令初始化。
- Docker 运行 lxc-start 来执行run命令。
- lxc-start 在容器中创建了一组namespace和Control Groups。
namespace是隔离的第一级,容器是相互隔离的,一个容器是看不到其它容器内部运行的进程情况,每个容器都分配了单独的网络栈,因此一个容器不可能访问另一容器的sockets。为了支持容器之间的IP通信,您必须指定容器的公网IP端口。
Control Groups是非常重要的组件,具有以下功能:
- 负责资源核算和限制。
- 提供CPU、内存、I/O和网络相关的指标。
- 避免某种DoS攻击。[图片]支持多租户平台
一些关键的Docker安全特性包括:
- 容器以非特权用户运行。
- Apparmor、SELinux、GRSEC解决方案,可用于额外的安全层。
- 可以使用其它容器系统的安全功能。
Docker.io API
用于管理与授权和安全相关的几个进程,Docker提供REST API。以下表格列出了关于此API用于维护相关安全功能的一些命令。