1. Docker Daemon 配置参数

  1. 限制容器之间网络通信
    在同一台主机上若不限制容器之间通信,容器之间就会暴露些隐私的信息,所以推荐关闭

    docker daemon –icc=false
  2. 使用安全模式访问镜像仓库

    Docker Daemon支持安全模式(默认)和非安全模式(–insecure-registry)访问镜像仓库,推荐镜像仓库配置CA证书,Docker Daemon配置安全访问模式,采用TLS安全传输协议;

  3. 使用Docker Registry v2版本

    v2版本在性能与安全性方面比v1都增强了很多,如安全性上的镜像签名等.

    docker daemon –disable-legacy-registry;
  4. 为Docker Daemon配置TLS认证

    推荐指定Docker Daemon的监听IP、端口及unix socket,并配置TLS认证,通过Docker Daemon的IP+端口访问

    –tlsverify
    –tlscacert
    –tlscert
    –tlskey
  5. 为Docker Daemon开启用户空间支持

    Docker Daemon支持Linux内核的user namespace,为Docker宿主机提供了额外的安全,容器使用有root权限的用户,则这个用户亦拥有其宿主机的root权限,外部可以通过容器反向来操控宿主机,

    docker daemon –userns-remap=default
  6. 为Docker Daemon配置默认的CGroup

    某个程序可能会出现占用主机上所有的资源,导致其他程序无法正常运行,或者造成系统假死无法维护,这时候用 cgroups 就可以很好地控制进程的资源占用

    docker daemon –cgroup-parent=/foobar
  7. 日志级别
    日志级别设置为info:这样除了debug信息外,可以捕获所有的信息

    docker daemon –iptables=true
  8. 为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.
  1. 存储驱动

    推荐使用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 参数最佳实践的更多相关文章

  1. Docker 使用杂记 - 最佳实践尝试 - 实战

    目录 Docker 使用杂记 - 最佳实践尝试 - 实战 Docker简介 项目背景 内在原因 外在原因 基础镜像 需求 镜像维护者 工作文件夹 文件 ADD COPY 宗卷 命令 入口点 Docke ...

  2. Docker监控:最佳实践以及cAdvisor和Prometheus监控工具的对比

    在DockerCon EU 2015上,Brian Christner阐述了“Docker监控”的概况,分享了这方面的最佳实践和Docker stats API的指南,并对比了三个流行的监控方案:cA ...

  3. Docker日志收集最佳实践

    传统日志处理 说到日志,我们以前处理日志的方式如下: · 日志写到本机磁盘上 · 通常仅用于排查线上问题,很少用于数据分析 ·需要时登录到机器上,用grep.awk等工具分析 那么,这种方式有什么缺点 ...

  4. Java 服务 Docker 容器化最佳实践

    转载自:https://mp.weixin.qq.com/s/d2PFISYUy6X6ZAOGu0-Kig 1. 概述 当我们在容器中运行 Java 应用程序时,可能希望对其进行调整参数以充分利用资源 ...

  5. 【原创】Docker实战 Dockerfile最佳实践&&容器之间通信

    官方最佳实践文档 https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#from Docker实战(三十) ...

  6. Docker 日志管理最佳实践

    开源Linux 回复"读书",挑选书籍资料~ Docker-CE Server Version: 18.09.6 Storage Driver: overlay2 Kernel V ...

  7. Docker 跟 NodeJs 最佳实践

    Level-1 简单实现 需求:简单的构建一个app应用并且用docker部署.Dockerfile编写为: FROM node:7.3.0 RUN mkdir -p /usr/src/app COP ...

  8. 启动Activity,传递参数最佳实践

    优化后的好处不言而喻,OtherActivity中所需要的参数都在方法参数中体现,减少了交流询问的成本. (1)MainActivity.java OtherActivity.openActivity ...

  9. JVM参数最佳实践:元空间的初始大小和最大大小

    本文阅读时间大约4分钟. JVM加载类的时候,需要记录类的元数据,这些数据会保存在一个单独的内存区域内,在Java 7里,这个空间被称为永久代(Permgen),在Java 8里,使用元空间(Meta ...

随机推荐

  1. Yii2框架---常用代码

    一.Php控制器跳转 return $this->redirect('/site/index/index');   二.回调自身控制器 self::actionXxxx();   三.获取当前用 ...

  2. unity collider 和 trigger 触发条件

    物体A,物体B(都含有collider组件) collider触发条件:A和B至少一方是  未勾选is Kinematic的rigidbody,且都未勾选 is trigger.当只有一方是rigid ...

  3. 最长公共子序列poj1458

    #include<map> #include<set> #include<list> #include<cmath> #include<queue ...

  4. Lua调试:getinfo详解

    getinfo是调试Lua程序时一个很重要很常见的函数,主要用于获取函数调用的基本信息.这个函数的难点在于各个参数的含义.下面一一介绍. 一.函数简介: 1.原型:getinfo(level, arg ...

  5. H5游戏见缝插针开发

    中秋节马上就要来临,公司开发了一个h5小游戏叉月饼,其实就是游戏“见缝插针”的翻版.这个游戏的开发任务落到了我的头上... 一 游戏介绍 游戏场景基本如下所示:         二 所用工具 这次的开 ...

  6. 2.let 和 const

    Babel 是一个广泛使用的 ES6 转码器,可以将 ES6 代码转为 ES5 代码,从而在现有环境执行. Babel 提供一个REPL在线编译器,可以在线将 ES6 代码转为 ES5 代码.转换后的 ...

  7. 在linux下管理iphone

    场景: linux发行版:ubuntu 14.04 64bit 3.13.0-67-generic(内核版本) iphone型号:iphone 5c (ios 8.1.3 已越狱) 准备工作(一定要先 ...

  8. 常用oralce_sql

    1.解锁账户: 默认的scott用户是被锁定的,先解锁就能登陆上了. 使用下面的语句解锁scott: alter user scott account unlock; 解锁之后可能会要求你该密码: a ...

  9. 项目自动构建工具对比(Maven、Gradle、Ant)

    Java世界中主要有三大构建工具:Ant.Maven和Gradle.经过几年的发展,Ant几乎销声匿迹.Maven也日薄西山,而Gradle的发展则如日中天. Maven的主要功能主要分为5点,分别是 ...

  10. OGNL表达式与EL表达式

    一.OGNL表达式 a)什么是OGNL? OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言, 通过它简单一致的表达式语法.主要功能:    ...