互联网技术 / 互联网资讯 · 2023年12月15日 0

Docker教程:云计算核心技术的Docker守护程序目录

Docker守护程序将所有数据保留在一个目录中。这将跟踪与Docker相关的所有内容,包括容器,映像,卷,服务定义和机密。

默认情况下,该目录为:

/var/lib/docker 在Linux上。

C:ProgramDatadocker 在Windows上。

您可以使用data-Root配置选项将Docker守护程序配置为使用其他目录。

由于Docker守护程序的状态保留在此目录中,因此请确保为每个守护程序使用专用目录。如果两个守护程序共享同一目录,则将遇到难以解决的错误。

对守护程序进行故障排除

您可以在守护程序上启用调试,以了解该守护程序的运行时活动并帮助进行故障排除。如果守护程序完全没有响应,您还可以通过将信号发送到Docker守护程序,强制将所有线程的完整堆栈跟踪添加到守护程序日志中SIGUSR。

之间矛盾排查Daemon.json和启动脚本

如果您使用Daemon.json文件并且还dockerd手动或使用启动脚本将选项传递给命令,并且这些选项发生冲突,则Docker无法启动,并显示以下错误:

Docker教程:云计算核心技术的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成功启动,则它现在正在侦听由hosts key Daemon.json而不是socket指定的IP地址。