新IT运维时代 | Docker运维之最佳实践-下篇
来源:互联网 发布:万网域名信息查询 编辑:程序博客网 时间:2024/04/29 06:37
上篇针对操作系统、主机配置、容器镜像、容器运行时四大方面分享一些Docker的运维经验,本篇将着重在Docker Daemon参数和权限两个方面进一步分享。(阅读上篇请点击右侧:新IT运维时代 | Docker运维之最佳实践-上篇)
Docker Daemon为Docker的守护进程,大致可以分为Docker Server、Engine和Job三部分。Docker Daemon可以认为是通过Docker Server模块接受Docker Client的请求,并在Engine中处理请求,然后根据请求类型,创建出指定的Job并运行。
以下为Docker Daemon的架构示意图:
Docker Daemon参数
从上图不难看出Docker Daemon的核心地位,所以它的配置也尤为重要,下文会从安全、性能方面入手,下面具体讲讲该怎么配置Docker Daemon参数:
限制容器之间网络通信:在同一台主机上若不限制容器之间通信,容器之间就会暴露些隐私的信息,所以推荐关闭,设置参数如:docker daemon--icc=false;
日志级别设置为info:这样除了debug信息外,可以捕获所有的信息,设置参数如:
docker daemon --log-level="info"; 允许Docker Daemon修改iptables:这样可以自动避开错误的网络配置导致的容器和外部的访问问题,设置参数如:docker daemon--iptables=true;
使用安全模式访问镜像仓库:Docker Daemon支持安全模式(默认)和非安全模式(--insecure-registry)访问镜像仓库,推荐镜像仓库配置CA证书,Docker Daemon配置安全访问模式,采用TLS安全传输协议;
推荐使用Overlayfs作为Docker的存储驱动:Docker支持很多种储存驱动,CentOS默认的Docker存储驱动为devicemapper,Ubuntu默认的Docker存储驱动为aufs,那Docker储存驱动该怎么选择呢,可以参考下图的对比分析:
推荐为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信息,
/etc/docker/certs.d/目录保存的是registry证书相关的文件,设置目录的属性为root:root,权限为444。
本文来源:http://www.youruncloud.com/blog/125.html
- 新IT运维时代 | Docker运维之最佳实践-下篇
- 新IT运维时代 | Docker运维之最佳实践-上篇
- Docker运维之最佳实践
- Docker运维之最佳实践
- DevOps的最佳实践与Docker的运维挑战
- 高效运维最佳实践
- 360网络运维的最佳实践
- 智能化运维最佳实践-自动化
- azure 最佳实践-- 系统运维
- IT运维管理:网管软件时代的变革
- 游戏运维的最佳实践:搜狐畅游自动化运维之旅!
- IT运维管理的实践探讨
- docker安全最佳实践概述
- Docker日志收集最佳实践
- Docker最佳实践资源汇总
- 运维经验分享:Hadoop管理员的十个最佳实践
- Unix与Linux系统运维进阶最佳实践分享
- 《DevOps故障排除:Linux服务器运维最佳实践》读书笔记
- Java 中==和equals的区别
- ASP.Net 运行机制以及HttpModule和HttpHandler
- Navicat连接Oracle 解决方案之28547
- List集合切割实现对已有数据的分页显示(LIST容器数据量不大的情况下推荐使用)
- rabbitmq搭建
- 新IT运维时代 | Docker运维之最佳实践-下篇
- ipmitool 交叉编译移植到arm(android)
- 为何要支持IPV6
- 控制音频
- Spring整合Struts2和Hibernate+Maven(二)之SSH的配置文件
- Centos下安装tomcat
- 实验四:数组排列
- Particle System
- Python实现简单的爬虫获取某刀网的更新数据