原标题:云计算核心技术Docker教程:Docker守护程序目录
Docker守护程序将所有数据保留在一个目录中。这将跟踪与Docker相关的所有内容,包括容器,映像,卷,服务定义和机密。
默认情况下,该目录为:
/var/lib/docker 在Linux上。
C:\ProgramData\docker 在Windows上。
您可以使用data-root配置选项将Docker守护程序配置为使用其他目录 。
由于Docker守护程序的状态保留在此目录中,因此请确保为每个守护程序使用专用目录。如果两个守护程序共享同一目录(例如,NFS共享),则将遇到难以解决的错误。
对守护程序进行故障排除
您可以在守护程序上启用调试,以了解该守护程序的运行时活动并帮助进行故障排除。如果守护程序完全没有响应,您还可以通过将信号发送到Docker守护程序, 强制将所有线程的完整堆栈跟踪添加到守护程序日志中SIGUSR。
之间矛盾排查daemon.json和启动脚本
如果您使用daemon.json文件并且还dockerd 手动或使用启动脚本将选项传递给命令,并且这些选项发生冲突,则Docker无法启动,并显示以下错误:
如果看到类似于此错误的错误,并且正在使用标志手动启动守护程序,则可能需要调整标志或daemon.json来消除冲突。
如果要使用操作系统的init脚本启动Docker,则可能需要以特定于操作系统的方式覆盖这些脚本中的默认值。
将DAEMON.JSON中的HOSTS键与SYSTEMD一起使用
难以解决的配置冲突的一个显着示例是,您想指定一个不同于默认值的守护程序地址。Docker默认情况下侦听套接字。在使用Debian和Ubuntu的系统上systemd,这意味着-H启动时始终使用主机标志dockerd。如果在中指定 hosts条目,则将daemon.json导致配置冲突(如以上消息中所示),并且Docker无法启动。
要变通解决此问题,请创建/etc/systemd/system/docker.service.d/docker.conf具有以下内容的新文件,以删除-H默认情况下启动守护程序时使用的参数。
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd
有时您可能需要systemd使用Docker进行配置,例如 配置HTTP或HTTPS proxy。
sudo systemctl daemon-reload在尝试启动Docker之前运行。如果Docker成功启动,则它现在正在侦听由hostskey daemon.json而不是socket指定的IP地址。