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. cmd 菜单学习

    @ECHO OFF&PUSHD %~DP0 &TITLE 标题是随意的 mode con cols=36 lines=20 color 2C :menu cls echo. echo ...

  2. 2016年BAT公司常见的Web前端面试题整理

    1.JavaScript是一门什么样的语言,它有哪些特点? 没有标准答案. 2.JavaScript的数据类型都有什么? 基本数据类型:String,boolean,Number,Undefined ...

  3. JavaScript ,Python,java,C#,Go系列算法之【插入排序篇】

    常见的内部排序算法有:插入排序.希尔排序.选择排序.冒泡排序.归并排序.快速排序.堆排序.基数排序等.用一张图概括: 插入排序 插入排序(英语:Insertion Sort)是一种简单直观的排序算法. ...

  4. 使用Tomcat-redis-session-manager来实现Tomcat集群部署中的Session共享

    一.工作中因为要使用到Tomcat集群部署,此时就涉及到了Session共享问题,主要有三种解决方案: 1.使用数据库来存储Session 2.使用Cookie来存储Session 3.使用Redis ...

  5. 学习MVC之租房网站(九)-房源显示和搜索

    在上一篇<学习MVC之租房网站(八)- 前台注册和登录>完成了前台用户的注册.登录.重置密码等功能,然后要实现与业务相关的功能,包括房源的显示.检索等. 一 房源显示 房源显示内容较多,涉 ...

  6. 深入tornado中的TCPServer

    1 梳理: 应用层的下一层是传输层,而http协议一般是使用tcp的,所以实现tcp的重要性就不言而喻. 由于tornado中实现了ioloop这个反应器以及iostream这个对连接的异步读写,所以 ...

  7. 2、Java应用中常见的JDBC连接字符串(SQLite、MySQL、Oracle、Sybase、SQLServer、DB2)

    2.Java应用中常见的JDBC连接字符串 Java应用中连接数据库是不可或缺的,于是便整理一些可能用到的JDBC的jar包及其相匹配的URL,以备日后查阅. 1)SQLite Class.forNa ...

  8. Servlet起步

    什么是Servlet Servlet是sun公司制定的用来扩展web服务器功能的组件规范,通俗理解为遵循Servlet规范开发的实现了某个功能的Java组件.该组件没有 main 方法,不能独立地运行 ...

  9. 【JAVAWEB学习笔记】28_jqueryAjax:json数据结构、jquery的ajax操作和表单校验插件

    Ajax-jqueryAjax 今天内容: 1.json数据结构(重点) 2.jquery的ajax操作(重点) 3.jquery的插件使用   一.json数据结构 1.什么是json JSON(J ...

  10. java 操作 redis

    1.Java 使用 Redis 只需要下载一个jar包即可 地址:http://maven.outofmemory.cn/redis.clients/jedis/2.5.2/ 工程