Docker运维之佳实践

更新时间:2017-04-07 10:57:15 点击次数:1702次

容器技术的发展可以分为两个阶段,个阶段聚焦在IaaS层,仅仅把容器当做更轻量级虚拟机来使用,解决了应用运行时进程级资源隔离的问题;随着Docker的出现,容器虚拟化才有了统一的平台,由此容器技术发展到了第二个阶段,开始聚焦在PaaS层,以应用为中心,统一应用分发标准,实现DevOps。

本篇将针对操作系统、主机配置、容器镜像、容器运行时、Docker Daemon参数、Docker Daemon权限六大方面分享一些docker的运维经验;

操作系统

1.支持的操作系统类型

目前Docker官方支持的操作系统包含桌面版、服务器版、云提供商以及容器操作系统,具体如下:

2.操作系统的选择标准

有关操作系统的选择不能一概而论。首先,企业本身也有对操作系统的规定;其次,应用的不同也要求的操作系统不同;基于以上两点,若没有其他要求,相对而言采用容器操作系统有很大的优势。

图片描述

容器操作系统相对于其他操作系统的优势有以下几点:

主机配置

从安全性、稳定性、可靠性来讲,如何合理规划Docker运行环境非常重要,也是Docker运维的基础条件,下面会从容器分区、系统内核、Docker版本、Docker Daemon访问控制及日志审计来讲讲怎么规划:

容器镜像

镜像是容器运行的基础,所以镜像的安全至关重要,包括基础镜像的安全、软件包的漏洞、暴露的端口、SSH服务、非root用户等;

容器运行时参数

容器运行时的一些参数设置,在整个容器运行过程中非常重要,设置不好会严重影响容器的安全性、性能,下面就讲讲容器运行时需要考虑设置的一些比较重要的参数。

Docker Daemon参数

Docker Daemon为Docker的守护进程,大致可以分为Docker Server、Engine和Job三部分。Docker Daemon可以认为是通过Docker Server模块接受Docker Client的请求,并在Engine中处理请求,然后根据请求类型,创建出指定的Job并运行。

以下为Docker Daemon的架构示意图:

图片描述

从上图不难看出Docker Daemon的核心地位,所以它的配置也尤为重要,下文会从安全、性能方面入手,下面具体讲讲该怎么配置Docker Daemon参数:

限制容器之间网络通信:在同一台主机上若不限制容器之间通信,容器之间就会暴露些隐私的信息,所以推荐关闭,设置参数如:docker daemon –icc=false;

图片描述

推荐为Docker Daemon配置TLS认证:推荐指定Docker Daemon的监听IP、端口及unix socket,并配置TLS认证,通过Docker Daemon的IP+端口访问,设置参数如: ‘–tlsverify’ 、’–tlscacert’ 、’–tlscert’、’–tlskey’ ;

推荐为Docker Daemon开启用户空间支持: Docker Daemon支持Linux内核的user namespace,为Docker宿主机提供了额外的安全,容器使用有root权限的用户,则这个用户亦拥有其宿主机的root权限,外部可以通过容器反向来操控宿主机,设置参数如:docker daemon –userns-remap=default;

推荐为Docker Daemon配置默认的CGroup:某个程序可能会出现占用主机上所有的资源,导致其他程序无法正常运行,或者造成系统假死无法维护,这时候用 cgroups 就可以很好地控制进程的资源占用,设置参数如:docker daemon –cgroup-parent=/foobar;

推荐为Docker配置集中的远程日志收集系统: Docker支持很多种日志驱动,配置集中的远程日志系统用来存储Docker日志是非常有必要的,设置参数如:docker run –log-driver=syslog –log-opt syslog-address=tcp://ip;

推荐使用Docker Registry v2版本: v2版本在性能与安全性方面比v1都增强了很多,如安全性上的镜像签名,可设置参数如:docker daemon –disable-legacy-registry;

Docker Daemon权限

Docker Daemon相关文件和目录的属性及其权限关系到整个Docker运行时的安全,从运维角度来看,合理的规划好属性及其权限尤为重要,下面具体讲讲该怎么配置Docker Daemon权限。

1.设置Docker Daemon一些相关配置文件的属性及其权限

图片描述

2.设置Docker Daemon一些相关目录的属性及其权限

/etc/docker目录保存的是容器认证及key信息, 设置目录的属性为root:root,权限为755;

/etc/docker/certs.d/目录保存的是registry证书相关的文件,设置目录的属性为root:root,权限为444。


本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是一个个人学习交流的平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽,造成漏登,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

回到顶部
嘿,我来帮您!