运行一个容器或应用程序的核心是通过 Docker 服务端。Docker 服务的运行目前需要 root 权限,因此其安全性十分关键。
首先,确保只有可信的用户才可以访问 Docker 服务。Docker 允许用户在主机和容器间共享文件夹,同时不需要限制容器的访问权限,这就容易让容器突破资源限制。例如,恶意用户启动容器的时候将主机的根目录/
映射到容器的 /host
目录中,那么容器理论上就可以对主机的文件系统进行任意修改了。这听起来很疯狂?但是事实上几乎所有虚拟化系统都允许类似的资源共享,而没法禁止用户共享主机根文件系统到虚拟机系统。
这将会造成很严重的安全后果。因此,当提供容器创建服务时(例如通过一个 web 服务器),要更加注意进行参数的安全检查,防止恶意的用户用特定参数来创建一些破坏性的容器
为了加强对服务端的保护,Docker 的 REST API(客户端用来跟服务端通信)在 0.5.2 之后使用本地的 Unix 套接字机制替代了原先绑定在 127.0.0.1 上的 TCP 套接字,因为后者容易遭受跨站脚本攻击。现在用户使用 Unix 权限检查来加强套接字的访问安全。
用户仍可以利用 HTTP 提供 REST API 访问。建议使用安全机制,确保只有可信的网络或 VPN,或证书保护机制(例如受保护的 stunnel 和 ssl 认证)下的访问可以进行。此外,还可以使用 HTTPS 和证书来加强保护。
最近改进的 Linux 名字空间机制将可以实现使用非 root 用户来运行全功能的容器。这将从根本上解决了容器和主机之间共享文件系统而引起的安全问题。
终极目标是改进 2 个重要的安全特性:
最后,建议采用专用的服务器来运行 Docker 和相关的管理服务(例如管理服务比如 ssh 监控和进程监控、管理工具 nrpe、collectd 等)。其它的业务服务都放到容器中去运行。
控制节点上的拓扑管理策略FEATURESTATE:Kubernetesv1.18[beta]越来越多的系统利用CPU和硬件加速器的组合来支持对延迟要求较高的...
为容器和Pods分配CPU资源本页面展示如何为容器设置CPUrequest(请求)和CPUlimit(限制)。容器使用的CPU不能超过所配置的限制。...
在Pod中的容器之间共享进程命名空间FEATURESTATE:Kubernetesv1.17[stable]此页面展示如何为pod配置进程命名空间共享。当启用进程...
从Pod中访问KubernetesAPI本指南演示了如何从Pod中访问KubernetesAPI。在开始之前你必须拥有一个 Kubernetes 的集群,同时你的 K...
使用kubectl完成集群的第一次访问当你第一次访问KubernetesAPI的时候,我们建议你使用KubernetesCLI工具kubectl。访问集群时...
Docker run 命令Docker 命令大全docker run :创建一个新的容器并运行一个命令语法docker run [OPTIONS] IMAGE [COMMAND] [ARG.....
Docker search 命令Docker 命令大全docker search : 从Docker Hub查找镜像语法docker search [OPTIONS] TERMOPTIONS说明:--auto...