资讯专栏INFORMATION COLUMN

Docker Daemon生产环境关键的几个参数

mengbo / 3188人阅读

摘要:原文地址一些生产环境中要注意的参数配置。本文介绍一些生产环境中要特别注意的参数,这些参数可以通过在命令行参数形式给,也可以通过在里配置。然后执行来验证配置是否生效。它们的原理就是修改参数。

原文地址

一些docker daemon生产环境中要注意的参数配置。

本文介绍一些生产环境中dockerd要特别注意的参数,这些参数可以通过在dockerd命令行参数形式给,也可以通过在/etc/docker/daemon.json里配置。本文介绍的就是daemon.json配置方式。

在开始之前,请先查看/etc/docker/daemon.json是否存在,如果不存在则新建一个,内容是{}。然后你要懂JSON文件格式。

如何应用配置

下面所讲的配置最好在Docker安装完之后马上做,如果已经有容器运行了,那么先stop掉所有容器,然后再做。

修改完之后重启Docker daemon,比如在Ubuntu 16.04下:sudo systemctl restart docker.service

然后执行docker info来验证配置是否生效。

registry-mirrors
{
  "registry-mirrors": []
}

此参数配置的是Docker registry的镜像网站,国内访问docker hub有时候会抽风,所以配置一个国内的镜像网站能够加速Docker image的下载。

可以使用Daocloud加速器(需注册,使用免费)或者其他云厂商提供的免费的加速服务。它们的原理就是修改registry-mirrors参数。

dns
{
  "dns": []
}

Docker内置了一个DNS Server,它用来做两件事情:

解析docker network里的容器或Service的IP地址

把解析不了的交给外部DNS Server解析(dns参数设定的地址)

默认情况下,dns参数值为Google DNS nameserver:8.8.8.88.8.4.4。我们得改成国内的DNS地址,比如:

1.2.4.8

阿里DNS:223.5.5.5223.6.6.6

114DNS:114.114.114.114114.114.115.115

比如:

{
  "dns": ["223.5.5.5", "223.6.6.6"]
}
log-driver

Log driver是Docker用来接收来自容器内部stdout/stderr的日志的模块,Docker默认的log driver是JSON File logging driver。这里只讲json-file的配置,其他的请查阅相关文档。

json-file会将容器日志存储在docker host machine的/var/lib/docker/containers//-json.log(需要root权限才能够读),既然日志是存在磁盘上的,那么就要磁盘消耗的问题。下面介绍两个关键参数:

max-size,单个日志文件最大尺寸,当日志文件超过此尺寸时会滚动,即不再往这个文件里写,而是写到一个新的文件里。默认值是-1,代表无限。

max-files,最多保留多少个日志文件。默认值是1。

根据服务器的硬盘尺寸设定合理大小,比如:

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-files":"5"
  }
}
storage-driver

Docker推荐使用overlay2作为Storage driver。你可以通过docker info | grep Storage来确认一下当前使用的是什么:

$ docker info | grep "Storage"
Storage Driver: overlay2

如果结果不是overlay2,那你就需要配置一下了:

{
  "storage-driver": "overlay2"
}
mtu

如果docker host machine的网卡MTU为1500,则不需要此步骤

MTU是一个很容易被忽略的参数,Docker默认的MTU是1500,这也是大多数网卡的MTU值。但是!在虚拟化环境下,docker host machine网卡的MTU可能不是1500,比如在openstack创建的虚拟的网卡的MTU是1450:

$ ip link
1: ens3:  mtu 1450 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether fa:16:3e:71:09:f5 brd ff:ff:ff:ff:ff:ff

当Docker网络的MTU比docker host machine网卡MTU大的时候可能会发生:

容器外出通信失败

影响网络性能

所以将Docker网络MTU设置成和host machine网卡保持一致就行了,比如:

{
  "mtu": 1450
}

验证:

$ ip link
3: docker0:  mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default
    link/ether 02:42:6b:de:95:71 brd ff:ff:ff:ff:ff:ff

注意到docker0的MTU还是1500,不用惊慌,创建一个容器再观察就变成1450了(下面的veth是容器的虚拟网卡设备):

$ docker run -itd --name busybox --rm busybox
$ ip link
3: docker0:  mtu 1450 qdisc noqueue state UP mode DEFAULT group default
    link/ether 02:42:6b:de:95:71 brd ff:ff:ff:ff:ff:ff
268: vethdf32b1b@if267:  mtu 1450 qdisc noqueue master docker0 state UP mode DEFAULT group default
    link/ether 1a:d3:8a:3e:d3:dd brd ff:ff:ff:ff:ff:ff link-netnsid 2

在到容器里看看它的网卡,MTU也是1450:

$ docker exec busybox ip link
267: eth0@if268:  mtu 1450 qdisc noqueue
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff

关于Overlay network的MTU看这篇文章

参考资料

Daemon CLI

Configure logging drivers

JSON File logging driver

Use the OverlayFS storage driver

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/28043.html

相关文章

  • docker进阶,nginx部署几个重要点详解以及开发流程---持续更新

    摘要:无论这个连接是外部主动建立的,还是内部建立的。协议有表示层数据的表示安全压缩。在整个发展过程中的所有思想和着重点都以一种称为的文档格式存在。 部署基础知识url:协议://网站地址:端口(/)路径地址?参数eg: http://www.baidu.com:80/abc/dd/ www.baidu.com找服务器 80端口:找服务器上提供服务的应用 nginx uri:/ab...

    KunMinX 评论0 收藏0
  • docker进阶,nginx部署几个重要点详解以及开发流程---持续更新

    摘要:无论这个连接是外部主动建立的,还是内部建立的。协议有表示层数据的表示安全压缩。在整个发展过程中的所有思想和着重点都以一种称为的文档格式存在。 部署基础知识url:协议://网站地址:端口(/)路径地址?参数eg: http://www.baidu.com:80/abc/dd/ www.baidu.com找服务器 80端口:找服务器上提供服务的应用 nginx uri:/ab...

    ytwman 评论0 收藏0
  • Docker 架构私有云的机遇和挑战

    摘要:说起,必须要介绍是什么东西,为什么中小企业私有云适合使用。看一下现在的架构图开个玩笑。上面这四点导致我们必须要统一架构,最终把整个业务系统迁移到基于的类似于的私有云的平台。 本文系 ArchSummit 大会 CODING 工程师王振威演讲实录。 showImg(https://dn-coding-net-production-pp.qbox.me/c2f81423-54b9-4a7b...

    bang590 评论0 收藏0
  • 实录分享 | Google Borg 系统 与 Coding Docker 实践

    摘要:刚才听了谢乐冰的演讲我觉得很多东西和我们的思路非常像,从我回国到现在大概有一年多的时间。在看来,一个业务应用应该是分层的,每一层都是一个所谓的服务,刚才谢乐冰讲的所谓服务化和异步化,不会把这些东西从前到头搅在一起,这样非常难以扩展。 本文是数人云深圳技术分享课上Coding CTO 孙宇聪的演讲实录,小数带你走近这位诙谐幽默的大牛,领略他深入的见解和丰富的实践经验。 非常感谢今天有这个...

    wuyangnju 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<