docker 配置及排错

版本: 18.3
官网: https://docs.docker.com/config/daemon/

本篇讲述docker的配置项。

配置随机器自启动

#centOS:
systemctl enable docker

#ubuntu 
# 在ubuntu系统自动配置为随机自启动  , 取消使用下面命令  
$ echo manual | sudo tee /etc/init/docker.override
$ sudo chkconfig docker on

手动启动

若不想后台运行或者想测试,可以手动执行。
命令 dockerd
该命令会使之前台执行 并将日志直接打印在控制台。
通过 Ctrl+C 终止之。

配置docker daemon

有两种方式 :

  • 通过json配置文件
  • 通过启动dockerd时传递参数

json配置文件的位置在 :/etc/docker/daemon.jsonC:\ProgramData\docker\config\daemon.json

配置文件示例:

{
  "debug": true,
  "tls": true,
  "tlscert": "/var/docker/server.pem",
  "tlskey": "/var/docker/serverkey.pem",
  "hosts": ["tcp://192.168.59.3:2376"]
}

传递参数示例:

dockerd --debug \
  --tls=true \
  --tlscert=/var/docker/server.pem \
  --tlskey=/var/docker/serverkey.pem \
  --host tcp://192.168.59.3:2376

全量可配置参数:
https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file

{
    "authorization-plugins": [],
    "data-root": "",
    "dns": [],
    "dns-opts": [],
    "dns-search": [],
    "exec-opts": [],
    "exec-root": "",
    "experimental": false,
    "storage-driver": "",
    "storage-opts": [],
    "labels": [],
    "live-restore": true,
    "log-driver": "",
    "log-opts": {},
    "mtu": 0,
    "pidfile": "",
    "cluster-store": "",
    "cluster-store-opts": {},
    "cluster-advertise": "",
    "max-concurrent-downloads": 3,
    "max-concurrent-uploads": 5,
    "default-shm-size": "64M",
    "shutdown-timeout": 15,
    "debug": true,
    "hosts": [],
    "log-level": "",
    "tls": true,
    "tlsverify": true,
    "tlscacert": "",
    "tlscert": "",
    "tlskey": "",
    "swarm-default-advertise-addr": "",
    "api-cors-header": "",
    "selinux-enabled": false,
    "userns-remap": "",
    "group": "",
    "cgroup-parent": "",
    "default-ulimits": {},
    "init": false,
    "init-path": "/usr/libexec/docker-init",
    "ipv6": false,
    "iptables": false,
    "ip-forward": false,
    "ip-masq": false,
    "userland-proxy": false,
    "userland-proxy-path": "/usr/libexec/docker-proxy",
    "ip": "0.0.0.0",
    "bridge": "",
    "bip": "",
    "fixed-cidr": "",
    "fixed-cidr-v6": "",
    "default-gateway": "",
    "default-gateway-v6": "",
    "icc": false,
    "raw-logs": false,
    "allow-nondistributable-artifacts": [],
    "registry-mirrors": [],
    "seccomp-profile": "",
    "insecure-registries": [],
    "no-new-privileges": false,
    "default-runtime": "runc",
    "oom-score-adjust": -500,
    "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"
            ]
        }
    }
}

可使用的全量选项参见: https://docs.docker.com/engine/reference/commandline/dockerd/
或使用dockerd --help 查看 。

docker daemon 目录

Docker守护进程将所有数据保存在一个目录中。 这将跟踪与Docker相关的所有内容,包括containers, images, volumes, service definition, and secrets.

默认情况下该目录为:

  • /var/lib/docker
  • C:\ProgramData\docker

可以使用 data-root 选项来配置不同的目录。

由于Docker守护进程的状态保留在此目录中,因此请确保为每个守护进程使用专用目录。 如果两个守护程序共享相同的目录(例如NFS共享),则您将遇到难以排除故障的错误。

配置项与传递参数不一致错误

当在daemon.json中配置和 传递给dockerd的参数选项不一致时会报错, 报错信息如下类似 :

unable to configure the Docker daemon with file /etc/docker/daemon.json:
the following directives are specified both as a flag and in the configuration
file: hosts: (from flag: [unix:///var/run/docker.sock], from file: [tcp://127.0.0.1:2376])

注意: 在windows和Mac中 不支持 daemon.json中的hosts设置。

OOME (Out Of Memory Exceptions )

当容器期望获取的内存大于系统可用时,可能会出现OOME ,并且容器或docker 守护进程可能会被杀掉。 为避免该异常,请确保主机上运行的应用分配何时的内存。
参见 限制容器资源 https://docs.docker.com/config/containers/resource_constraints/

查看日志

守护进程日志可用于定位问题, 不同类型的机器上日志位置不同。

图片.png

开启debug模式

  1. 编辑deamon.json , 通常在/etc/docker/目录下, 对于linux系统,若不存在则创建之。 对于mac 和windows ,不要直接编辑之,使用 Preferences / Daemon / Advanced.

  2. 若daemon.json空 ,则加入下行:

{
  "debug": true
}

若不空,需要注意json格式和换行问题。
同时需要注意 log-level 配置的值, 默认为info , 支持的值为 debug, info, warn, error, fatal.

  1. 对于linux系统发送HUP信号使之重新加载配置
    sudo kill -SIGHUP $(pidof dockerd)
    对于windows , 重启之。

也可以不遵从上面的流程, 换做先stop , 然后使用-D选项手工启动之。
但是,这可能会导致运行环境与原使用脚本启动的环境不一致,导致debug更加困难。

强制堆栈追踪日志

若守护进程没反映, 可以通过发送SIGUSR1 信号 以记录全部堆栈信息到日志中。
对于linux系统:
sudo kill -SIGUSR1 $(pidof dockerd)

对于windows , 需要下载docker-signal , 然后执行 。

这会在不中断守护进程的情况下记录堆栈日志 。
堆栈日志可以用来诊断守护进程中各个线程的状态。

查看 堆栈

  • 对于使用systemctl的linux , 使用 journalctl -u docker.service
    注意: 对于mac 和windows , 不能手工生成堆栈日志, 但是可以通过Diagnose and feedback 来查看。

查看docker是否正在运行

通过 docker info 命令来查看。

通过操作系统工具来查看 , 如 sudo systemctl is-active docker or sudo status docker or sudo service docker status

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,367评论 6 512
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,959评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,750评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,226评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,252评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,975评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,592评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,497评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,027评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,147评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,274评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,953评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,623评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,143评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,260评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,607评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,271评论 2 358

推荐阅读更多精彩内容