配置镜像加速地址

通过配置镜像加速地址registry-mirrors,可以很大程度提高镜像下载速度。

存储驱动调优

配置 Docker 存储驱动时,建议使用新版的 overlay2,因为它更稳定。OverlayFS 是一个新一代的联合文件系统,类似于 AUFS,但速度更快,实现更简单。Docker 为 OverlayFS 提供了两个存储驱动程序:旧版的 overlay 和新版的。

容器中会产生大量日志文件,很容器占满磁盘空间。您可以在全局范围限制日志文件大小max-size和日志文件数量max-file,可以有效控制日志文件对磁盘的占用量,如下图所示,您可以将日志文件大小max-size设为 30Mb,日志文件数量max-file设为 10。完成设置后,请运行systemctl daemon-reload命令,重新加载配置文件;然后运行systemctl restart docker命令,重启 Docker。重启后调优规则马上生效。日志文件存储的机制是这样的:

  • 日志不满 30Mb 的情况下,只会生成一个*.log文件,存储日志内容。
  • 日志超出 30Mb,但少于 300Mb(数量限制 x 大小限制)的情况下,会生成*.log*.log.1*.log.2*.log.n(n 小于或等于 9)这几个文件存储日志内容。
  • 日志超出 300Mb(数量限制 x 大小限制),会按照生成 log 文件的时间,由早到晚依次将*.log*.log.1*.log.2*.log.n的日志内容替换成最近的日志内容。

开启WARNING: No swap limit support,WARNING: No memory limit support支持

对于 Ubuntu\Debian 系统,执行命令时能看到警告WARNING: No swap limit support或者WARNING No memory limit support。因为 Ubuntu\Debian 系统默认关闭了swap account或者功能,这样会导致设置容器内存或者 swap 资源限制不生效,可以通过以下命令解决:

  • 删除已有的 docker0 接口

    sudo ip link del docker0

  • 修改 docker 配置文件

综合配置调优

  1. touch /etc/docker/daemon.json
  2. cat > /etc/docker/daemon.json <<EOF
  3. {
  4. "oom-score-adjust": -1000,
  5. "log-driver": "json-file",
  6. "log-opts": {
  7. "max-size": "100m",
  8. "max-file": "3"
  9. },
  10. "max-concurrent-uploads": 10,
  11. "bip": "169.254.123.1/24",
  12. "registry-mirrors": ["https://7bezldxe.mirror.aliyuncs.com"],
  13. "storage-driver": "overlay2",
  14. "storage-opts": [
  15. "overlay2.override_kernel_check=true"
  16. ]
  17. }
  18. EOF
  19. systemctl daemon-reload && systemctl restart docker

对于 CentOS 系统,docker.service 默认位于/usr/lib/systemd/system/docker.service;对于 Ubuntu 系统,docker.service 默认位于/lib/systemd/system/docker.service。编辑docker.service,添加以下参数。

  • 防止 docker 服务 OOM: OOMScoreAdjust=-1000

ExecStartPost=/usr/sbin/iptables -P FORWARD ACCEPT (centos)

ExecStartPost=/sbin/iptables -P FORWARD ACCEPT (ubuntu)