第二十一章 Centos7下Docker自定义配置


There are a number of ways to configure the daemon flags and environment variables for your Docker daemon. The recommended way is to use the platform-independent daemon.json file, which is located in /etc/docker/ on Linux by default.

推荐使用 /etc/docker/daemon.json 自定义配置。

一、具体操作

#1.关闭 docker
[root@m1 ~]# systemctl stop docker
[root@m1 ~]# systemctl status docker

#2.移动文件
[root@m1 ~]# mv /var/lib/docker /data

#3.新增文件 /etc/docker/daemon.json,默认不存在
[root@m1 ~]# vim /etc/docker/daemon.json 
{
    "registry-mirrors": ["https://8mh75mhz.mirror.aliyuncs.com"],
    "data-root": "/data/docker",
    "live-restore": true
  }

#4.重启 docker,start 无效
[root@m1 ~]# systemctl restart docker

#5.查看镜像是否仍存在
[root@m1 ~]# docker images

二、软链接修改数据目录

Docker supports softlinks for the Docker data directory (`/var/lib/docker`) and for `/var/lib/docker/tmp`.

Docker 的数据目录支持软链接。
#1.查看 docker 数据目录大小
[root@m1 ~]# du -sh /var/lib/docker
8.9G /var/lib/docker

#2.关闭 docker
[root@m1 ~]# systemctl stop docker
[root@m1 ~]# systemctl status docker

#3.移动文件
[root@m1 ~]# mv /var/lib/docker /data

#4.创建软链接
[root@m1 ~]# ln -s /data/docker /var/lib/

#5.启动 docker
[root@m1 ~]# systemctl start docker

#6.查看镜像是否仍存在
[root@m1 ~]# docker images

#7.查看 docker 数据目录大小
[root@m1 ~]# du -sh /var/lib/docker/
12G /var/lib/docker/
[root@m1 ~]# du -sh /data/docker/
12G /data/docker/

三、自定义配置示例参考

{
    "authorization-plugins": [],//访问授权插件
    "data-root": "",//docker数据持久化存储的根目录
    "dns": [],//DNS服务器
    "dns-opts": [],//DNS配置选项,如端口等
    "dns-search": [],//DNS搜索域名
    "exec-opts": [],//执行选项
    "exec-root": "",//执行状态的文件的根目录
    "experimental": false,//是否开启试验性特性
    "storage-driver": "",//存储驱动器
    "storage-opts": [],//存储选项
    "labels": [],//键值对式标记docker元数据
    "live-restore": true,//dockerd挂掉是否保活容器(避免了docker服务异常而造成容器退出)
    "log-driver": "",//容器日志的驱动器
    "log-opts": {"max-size":"2G","max-file":"3"},//容器日志的选项
    "mtu": 0,//设置容器网络MTU(最大传输单元)
    "pidfile": "",//daemon PID文件的位置
    "cluster-store": "",//集群存储系统的URL
    "cluster-store-opts": {},//配置集群存储
    "cluster-advertise": "",//对外的地址名称
    "max-concurrent-downloads": 3,//设置每个pull进程的最大并发
    "max-concurrent-uploads": 5,//设置每个push进程的最大并发
    "default-shm-size": "64M",//设置默认共享内存的大小
    "shutdown-timeout": 15,//设置关闭的超时时限
    "debug": true,//开启调试模式
    "hosts": [],//监听地址
    "log-level": "",//日志级别
    "tls": true,//开启传输层安全协议TLS
    "tlsverify": true,//开启输层安全协议并验证远程地址
    "tlscacert": "",//CA签名文件路径
    "tlscert": "",//TLS证书文件路径
    "tlskey": "",//TLS密钥文件路径
    "swarm-default-advertise-addr": "",//swarm对外地址
    "api-cors-header": "",//设置CORS(跨域资源共享-Cross-origin resource sharing)头
    "selinux-enabled": false,//开启selinux(用户、进程、应用、文件的强制访问控制)
    "userns-remap": "",//给用户命名空间设置 用户/组
    "group": "",//docker所在组
    "cgroup-parent": "",//设置所有容器的cgroup的父类
    "default-ulimits": {},//设置所有容器的ulimit
    "init": false,//容器执行初始化,来转发信号或控制(reap)进程
    "init-path": "/usr/libexec/docker-init",//docker-init文件的路径
    "ipv6": false,//开启IPV6网络
    "iptables": false,//开启防火墙规则
    "ip-forward": false,//开启net.ipv4.ip_forward
    "ip-masq": false,//开启ip掩蔽(IP封包通过路由器或防火墙时重写源IP地址或目的IP地址的技术)
    "userland-proxy": false,//用户空间代理
    "userland-proxy-path": "/usr/libexec/docker-proxy",//用户空间代理路径
    "ip": "0.0.0.0",//默认IP
    "bridge": "",//将容器依附(attach)到桥接网络上的桥标识
    "bip": "",//指定桥接ip
    "fixed-cidr": "",//(ipv4)子网划分,即限制ip地址分配范围,用以控制容器所属网段实现容器间(同一主机或不同主机间)的网络访问
    "fixed-cidr-v6": "",//(ipv6)子网划分
    "default-gateway": "",//默认网关
    "default-gateway-v6": "",//默认ipv6网关
    "icc": false,//容器间通信
    "raw-logs": false,//原始日志(无颜色、全时间戳)
    "allow-nondistributable-artifacts": [],//不对外分发的产品提交的registry仓库
    "registry-mirrors": [],//registry仓库镜像
    "seccomp-profile": "",//seccomp配置文件
    "insecure-registries": [],//非https的registry地址
    "no-new-privileges": false,//禁止新优先级
    "default-runtime": "runc",//OCI联盟(The Open Container Initiative)默认运行时环境
    "oom-score-adjust": -500,//内存溢出被杀死的优先级(-1000~1000)
    "node-generic-resources": ["NVIDIA-GPU=UUID1", "NVIDIA-GPU=UUID2"],//对外公布的资源节点
    "runtimes": {//运行时
        "cc-runtime": {
            "path": "/usr/bin/cc-runtime"
        },
        "custom": {
            "path": "/usr/local/bin/my-runc-replacement",
            "runtimeArgs": [
                "--debug"
            ]
        }
    }
}