我在生产中积累下来的 daemon.json 的配置经验

2,473 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 8 天, 点击查看活动详情

docker daemon.json 配置文件

daemon.json 配置方式

  • Linux: /etc/docker/daemon.json
  • Windows Server: C:\ProgramData\docker\config\daemon.json
  • Docker for Mac / Docker for Windows: Click the Docker icon in the toolbar, select Preferences, then select Daemon. Click Advanced.

daemon.json 配置

镜像加速器

// 配置一个
{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

// 配置多个
{
  "registry-mirrors": ["https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn"]
}

镜像加速器常用值:

docker-cn 官方 : https://registry.docker-cn.com

中科大 : https://docker.mirrors.ustc.edu.cn

日志

{
  "debug": true,
  "log-level": "info"
}

log-level 的有效值包括: debug, info, warn, error, fatal

监控 Prometheus

docs.docker.com/engine/admi…

{
  "metrics-addr" : "127.0.0.1:9323",
  "experimental" : true
}

保持容器在线

docs.docker.com/engine/admi…

dockerd 进程死掉后, 依旧保持容器存活。

{
  "live-restore": true
}

Linux 重载 docker daemon

$ sudo kill -SIGHUP $(pidof dockerd)

设置 镜像、容器、卷 存放目录和驱动

docs.docker.com/engine/admi…

下述两个参数可以单独使用

{
    "graph": "/mnt/docker-data",
    "storage-driver": "overlay"
}

graph: 设置存放目录

  • Docker Root Dir: /mnt/docker-data

storage-driver: 设置存储驱动

  • Storage Driver: overlay

user namespace remap

docs.docker.com/engine/secu…

安全设置: 用户空间重映射

userns-remap 的值可以是 如果值字段 只有 一个值, 那么该字段表示 。 如果需要同时指定 用户, 需要使用 冒号 分隔,格式为 用户:组

  • 用户:组
  • 用户 的值可以是组或用户的 名称ID
    • testuser
    • testuser:testuser
    • 1001
    • 1001:1001
    • testuser:1001
    • 1001:testuser
{
  "userns-remap": "testuser"
}

// 或同时指定 用户和组,且使用 名称和ID
{
  "userns-remap": "testuser:1001"
}
$ dockerd --userns-remap="testuser:testuser"

userns-remap 使用不多,但并不是不重要。目前不是默认启用的原因是因为一些应用会假定 uid 0 的用户拥有特殊能力,从而导致假定失败,然后报错退出。所以如果要启用 user id remap,你要充分测试一下。但是启用 uid remap 的安全性提高是明显的。

自建 docker 网络冲突配置

由于 docker 本身是默认使用 B 类地址(172.xx.0.0/16), 大部分情况下会和公司网络产生冲突。

为了解决这个问题,需要在 /etc/docker/daemon.json 中增加 "bip":"169.254.31.1/24" 指定容器使用的网络。

{
    "bip":"169.254.31.1/24"
}

如果在 daemon.json 中已有配置,根据 json 格式增加

互相吹捧, 共同进步

欢迎和我一起学习进步:可以在掘金私信我

DevOpsCamp星球 是一个完全免费的学习星球。 每月1日和15日 发布作业和扩展阅读文章。 其存在的意义是 帮助和引导 那些愿意学习的人。 想睡的人叫不醒, 想走的人留不住

也可以加我微信号:老麦 , 公众号:Go与云原生 , 关注B站视频:老麦胖熊猫