Docker Daemon 参数最佳实践
1. Docker Daemon 配置参数
限制容器之间网络通信
在同一台主机上若不限制容器之间通信,容器之间就会暴露些隐私的信息,所以推荐关闭docker daemon –icc=false使用安全模式访问镜像仓库
Docker Daemon支持安全模式(默认)和非安全模式(–insecure-registry)访问镜像仓库,推荐镜像仓库配置CA证书,Docker Daemon配置安全访问模式,采用TLS安全传输协议;
使用Docker Registry v2版本
v2版本在性能与安全性方面比v1都增强了很多,如安全性上的镜像签名等.
docker daemon –disable-legacy-registry;为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日志级别
日志级别设置为info:这样除了debug信息外,可以捕获所有的信息docker daemon –iptables=true为Docker配置集中的远程日志收集系统
Docker支持很多种日志驱动,配置集中的远程日志系统用来存储Docker日志是非常有必要的.
docker run –log-driver=syslog –log-opt syslog-address=tcp://ip;Docker 支持的日志驱动, 官方文档
| Driver | Desc |
|---|---|
| none | No logs will be available for the container and docker logs will not return any output. |
| json-file | The logs are formatted as JSON, The default logging driver for docker |
| syslog | Writes logging messages to the syslog facility. The syslog daemon must be running on the host machine. |
| journald | Writes log messages to the journald. The journald daemon must be running on the host machine. |
| gelf | Write log messages to the Graylog Extended Log Format (GELF) endpoint such as Graylog or Logstash. |
| fluentd | Write log messages to fluentd (forward input). The fluentd deamon must be running on the host machine. |
| awslogs | Write log messages to Amazon CloudWatch Logs. |
| splunk | Writes log messages to splunk using the HTTP Event Collector. |
| etwlogs | Wrtites log message as Event Tracing for Windows (ETW). Only available on Windows platforms. |
| gcplogs | Write log messages to Google Cloud Platform (GCP) Logging. |
存储驱动
推荐使用Overlayfs作为Docker的存储驱动:Docker支持很多种储存驱动,CentOS默认的Docker存储驱动为devicemapper,Ubuntu默认的Docker存储驱动为aufs,
| # | 特点 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| Aufs | 联合文件系统, 未并入内核主线文件级存储 | 作为 docker 的第一个存储驱动, 历史较久, 比较稳定,且在生产中大量实践过, 有较强的社区支持 | 有很多层, 在做写时复制操作时, 如果文件比较大,且存在比较低的层, 可能会慢一些 | 大并发但少IO 的场景 |
| OverlayFS | 联合文件系统, 并入内核主线文件级存储 | 只有两层 | 不管修改的内容大小都会复制整个文件, 对大文件进行修改显示比小文件要消耗更多的时间 | 大并发但少IO的场景 |
| DeviceMapper | 并入内核主线文件级存储 | 块级别, 无论是大文件还是小文件都只复制需要修改的块, 而不是整个文件 | 支持共享存储, 表示当有多个容器读同一个文件时, 需要生成多个复本, 在很多容器启停的情况下, 可能会导致磁盘溢出 | 适合IO密集的场景 |
| Btrfs | 并入内核主线文件级存储 | 可以向 DeviceMapper 直接操作底层设备, 支持动态添加设备 | 不支持共享存储, 表示当有多个容器读同一个文件时, 需要生成多个复本 | 不适合在高密度容器的 PaaS 平台上使用 |
| ZFS | 把所有设备集中到奥一个存储池中来进行管理 | 支持多个容器共享一个缓存块, 适合内存大的场景 | COW 使碎片化问题更加严重, 文件在硬件上的物理地址变得不再连续, 顺序读会变得性能比较差 | 适合 PassS 和 高密度场景 |
2. Docker Daemon权限
Docker Daemon相关文件和目录的属性及其权限关系到整个Docker运行时的安全.
设置Docker Daemon一些相关配置文件的属性及其权限
| 配置文件 | 属性设置 | 权限设置 | 备注信息 |
|---|---|---|---|
| docker.service | root:root | 644 | |
| docker.sock | root:root | 660 | |
| docker.json | root:root | 644 | |
| docker | root:root | 644 | |
| TLS CA certificate | root:root | 444 | 通过 --tlscacert 参数传递生成的文件属性 |
| Docker server certificate | root:root | 444 | 通过 --tlscert 参数传递生成的文件属性 |
| Docker server certificate key | root:root | 400 | 通过 --tlskey 参数传递生成的文件属性 |
| /etc/docker | root:root | 755 | 容器认证及key信息 |
| /etc/docker/certs.d/ | root:root | 444 | registry 证书相关的文件 |
Docker Daemon 参数最佳实践的更多相关文章
- Docker 使用杂记 - 最佳实践尝试 - 实战
目录 Docker 使用杂记 - 最佳实践尝试 - 实战 Docker简介 项目背景 内在原因 外在原因 基础镜像 需求 镜像维护者 工作文件夹 文件 ADD COPY 宗卷 命令 入口点 Docke ...
- Docker监控:最佳实践以及cAdvisor和Prometheus监控工具的对比
在DockerCon EU 2015上,Brian Christner阐述了“Docker监控”的概况,分享了这方面的最佳实践和Docker stats API的指南,并对比了三个流行的监控方案:cA ...
- Docker日志收集最佳实践
传统日志处理 说到日志,我们以前处理日志的方式如下: · 日志写到本机磁盘上 · 通常仅用于排查线上问题,很少用于数据分析 ·需要时登录到机器上,用grep.awk等工具分析 那么,这种方式有什么缺点 ...
- Java 服务 Docker 容器化最佳实践
转载自:https://mp.weixin.qq.com/s/d2PFISYUy6X6ZAOGu0-Kig 1. 概述 当我们在容器中运行 Java 应用程序时,可能希望对其进行调整参数以充分利用资源 ...
- 【原创】Docker实战 Dockerfile最佳实践&&容器之间通信
官方最佳实践文档 https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#from Docker实战(三十) ...
- Docker 日志管理最佳实践
开源Linux 回复"读书",挑选书籍资料~ Docker-CE Server Version: 18.09.6 Storage Driver: overlay2 Kernel V ...
- Docker 跟 NodeJs 最佳实践
Level-1 简单实现 需求:简单的构建一个app应用并且用docker部署.Dockerfile编写为: FROM node:7.3.0 RUN mkdir -p /usr/src/app COP ...
- 启动Activity,传递参数最佳实践
优化后的好处不言而喻,OtherActivity中所需要的参数都在方法参数中体现,减少了交流询问的成本. (1)MainActivity.java OtherActivity.openActivity ...
- JVM参数最佳实践:元空间的初始大小和最大大小
本文阅读时间大约4分钟. JVM加载类的时候,需要记录类的元数据,这些数据会保存在一个单独的内存区域内,在Java 7里,这个空间被称为永久代(Permgen),在Java 8里,使用元空间(Meta ...
随机推荐
- CSS3 02. 边框、边框圆角、边框阴影、边框图片、渐变、线性渐变、径向渐变、背景、过渡transition、2D转换
边框圆角 border-radius 每个角可以设置两个值,x值.y值 border-top-left-radius:水平半径 垂直半径 border-radius:水平半径/垂直半径 border- ...
- arcgis属性选取like用法
查询对象为ArcInfo coverage,shapefile, INFO table,dBASE table,ArcSDE data,ArcIMS 要素类,或者 ArcIMS image servi ...
- The authenticity of host '172.16.33.53 (172.16.33.53)' can't be established的问题(日志六)
用ssh登录一个机器(换过ip地址)会出现如下错误 weiguohui@weiguohui1-virtual-machine:~/.ssh$ ssh 172.16.33.53The authentic ...
- 搭建后台页面布局利用属性target 属性
HTML 5 <form> target 属性 HTML 5 <form> 标签 实例 提交一个在新窗口中打开的表单: <form action="demo_f ...
- MySQL 闪回工具之 binlog2sql
生产上误删数据.误改数据的现象也是时常发生的现象,作为 DBA 这时候就需要出来补锅了,最开始的做法是恢复备份,然后从中找到需要的数据再进行修复,但是这个时间太长了,对于大表少数数据的修复来讲,动作太 ...
- Java7中的ForkJoin并发框架初探(下)—— ForkJoin的应用
前两篇文章已经对Fork Join的设计和JDK中源码的简要分析.这篇文章,我们来简单地看看我们在开发中怎么对JDK提供的工具类进行应用,以提高我们的需求处理效率. Fork Join这东西确实用好了 ...
- JAVA并发编程实战---第三章:对象的共享(2)
线程封闭 如果仅仅在单线程内访问数据,就不需要同步,这种技术被称为线程封闭,它是实现线程安全性的最简单的方式之一.当某个对象封闭在一个线程中时,这种方法将自动实现线程安全性,即使被封闭的对象本生不是线 ...
- Window7 下 WNMP 环境搭建
WNMP 指"Windows 下的 Nginx.MariaDB/MySQL 和 PHP 环境". 下载 Nginx:http://nginx.org/en/download.htm ...
- CentOS 6.x 本地yum源配置与使用
系统默认已经安装了可使用yum的软件包,所以可以直接配置: # mount /dev/cdrom /mnt 挂载镜像,可以写到配置文件 ...
- vim 和grep 正则表达式相似和区别
正则表达式由两种基本字符类型组成:原义(正常)文本字符和元字符.元字符使正则表达式具有处理能力.所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符 ...