新IT运维时代 | Docker运维之最佳实践-下篇
上篇针对操作系统、主机配置、容器镜像、容器运行时四大方面分享一些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信息, 设置目录的属性为root:root,权限为755;
/etc/docker/certs.d/<registry-name>目录保存的是registry证书相关的文件,设置目录的属性为root:root,权限为444。
本文来源:http://www.youruncloud.com/blog/125.html
新IT运维时代 | Docker运维之最佳实践-下篇的更多相关文章
- 新IT运维时代 | Docker运维之最佳实践-上篇
容器技术的发展可以分为两个阶段,第一个阶段聚焦在IaaS层,仅仅把容器当做更轻量级虚拟机来使用,解决了应用运行时进程级资源隔离的问题:随着Docker的出现,容器虚拟化才有了统一的平台,由此容器技术发 ...
- 8.云原生之Docker容器镜像构建最佳实践浅析
转载自:https://www.bilibili.com/read/cv15220861/?from=readlist 本章目录 0x02 Docker 镜像构建最佳实践浅析 1.Dockerfile ...
- [Docker] 写 Dockerfile 的最佳实践理论
指导方针 创建短暂的容器 意思是 container 可以停止和销毁,接着以最小化启动和配置进行重新构建和替换. 理解构建的上下文 使用 docker build ,当前工作环境称 ...
- [Docker] 容器开发环境最佳实践理论
保持 image 小 选择合适的 base image. 使用 multi-stage 构建. https://docs.docker.com/develop/develo ...
- Docker容器日志管理最佳实践
目录 一 .Docker 引擎日志 二.容器日志 2.1.常用查看日志命令--docker logs 2.2 .Docker 日志 驱动 三. 生产环境中该如何储存容器中的日志 一.当是完全是标准输出 ...
- Docker多主机互联最佳实践
在公司使用docker多主机互联时碰到了各种坑.搞清楚后才发现如此简单,以下是根据实际经验的总结. 版本信息 Client: Version: 18.09.0 API version: 1.39 Go ...
- Docker镜像原理和最佳实践
https://yq.aliyun.com/articles/68477 https://yq.aliyun.com/articles/57126 DockerCon 2016 深度解读: Dock ...
- DOCKER学习_008:Docker容器的运行最佳实践
一 容器分类 容器按用途大致可分为两类: 服务类容器,如 web server. database等 工具类容器,如cur容器, Iredis-cli容器 通常而言,服务类容器需要长期运行,所以使用 ...
- Docker笔记(十一):Dockerfile详解与最佳实践
Dockerfile是一个文本文件,包含了一条条指令,每条指令对应构建一层镜像,Docker基于它来构建一个完整镜像.本文介绍Dockerfile的常用指令及相应的最佳实践建议. 1. 理解构建上下文 ...
随机推荐
- laravel-admin(自定义表单视图)
前言: 在上一遍文章(https://www.cnblogs.com/shiwenhu/p/10271013.html)中写到可以使用自定义form组建来创建表单,几乎能满足我们大部分要求,而且不用我 ...
- mysql的配置和启动命令
一.mysql配置文件在linux系统下的位置 使用命令查询位置: 1.找到安装位置 which mysql -> /usr/bin/mysql 2.接下来就可以针对这个目录通过一些命令查看配 ...
- node.js中模块,require
在php,C++中都有命名空间的概念,命名空间主要是用来解决引入文件存在函数,类,变量重名的问题,在node.js中,没有命名空间这么复杂的概念,在node中,有模块的概念,也就是将功能性的代码都放在 ...
- (数据科学学习手札62)详解seaborn中的kdeplot、rugplot、distplot与jointplot
一.简介 seaborn是Python中基于matplotlib的具有更多可视化功能和更优美绘图风格的绘图模块,当我们想要探索单个或一对数据分布上的特征时,可以使用到seaborn中内置的若干函数对数 ...
- python算法与数据结构-队列(44)
一.队列的介绍 队列的定义:队列是一种特殊的线性表,只允许在表的头部(front处)进行删除操作,在表的尾部(rear处)进行插入操作的线性数据结构,这种结构就叫做队列.进行插入操作的一端称为队尾,进 ...
- Go - Struct 结构体
目录 概述 声明结构体 生成 JSON 改变数据 推荐阅读 概述 结构体是将零个或多个任意类型的变量,组合在一起的聚合数据类型,也可以看做是数据的集合. 声明结构体 //demo_11.go pack ...
- jmeter性能测试前及测试后
压测前: 1.压力测试两种场景: 1)单场景,压测单个接口. 2)混合场景,多个接口关联压测. 2.压测时间: ...
- GRPC 截止时间与元数据
截止时间 gRPC 允许客户端在调用一个远程方法前指定一个最后期限值.这个值指定了在客户端可以等待服务端多长时间来应答,超过这个时间值 RPC 将结束并返回DEADLINE_EXCEEDED错误.在服 ...
- java 学习之路第一节
一.安装mysql驱动:http://mvnrepository.com/search?q=mysql-conn 二.看数据库中有什么表安装:navicat for MySQL 文件类写数据库查询: ...
- Spring 注解编程之注解属性别名与覆盖
前两篇文章咱聊了深入了解了 Spring 注解编程一些原理,这篇文章我们关注注解属性方法,聊聊 Spring 为注解的带来的功能,属性别名与覆盖. 注解属性方法 在进入了解 Spring 注解属性功能 ...