Docker 守护进程似乎正在运行,但 docker.sock 已经消失。我缺少什么?

Tho*_*tes 2 reverse-proxy nginx docker docker-compose ubuntu-20.04

背景:
\n几个月前我拿起一台旧服务器并启动了一个 Linux 项目。我学到了很多东西并且获得了很多乐趣。我正在使用服务器托管多个网站(这些网站仍在开发中,因为我也在学习网站开发)。在网上搜索了解了SSL/TLS证书、nginx、docker等。

\n

根据我所学到的知识,我设置了 SWAG来使用 docker-compose 处理证书和反向代理。我将其他站点添加到同一个 docker-compose.yaml 文件中。经过一番努力,我终于能够让一切按照我想要的方式进行。我的每个站点都有 docker 容器,并且每个站点都有存根站点。我可以从任何浏览器访问它们。

\n

我第一次停电并且服务器恢复时,docker 容器并未全部正确启动。我在 SWAG 容器上收到“地址已在使用中”错误。我用谷歌搜索解决方案并找到了这个答案建议找到并终止绑定到相关端口(对我来说是 80 和 443)的现有进程,以便 docker 容器(在我的例子中是 SWAG 容器)可以绑定到它们。我发现使用端口 80 和 443 的进程都是“docker-pr”。我杀死了它们,并且能够成功地重新启动 SWAG docker 容器,没有任何错误。但是,每次重新启动或重新引导服务器时,我都必须执行相同的步骤。

\n

最近(过去几周)我还看到了另一个问题。我按照上述步骤操作,一切都按预期进行。然后,在 1-2 小时或 1-2 天后,我检查 docker 容器的状态,结果显示:

\n
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?\n
Run Code Online (Sandbox Code Playgroud)\n

我查了一下,没有/var/run/docker.sock文件。我使用命令检查了 docker 守护进程的状态sudo service docker status,结果显示:

\n
\xe2\x97\x8f docker.service - Docker Application Container Engine\n     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)\n    Drop-In: /etc/systemd/system/docker.service.d\n             \xe2\x94\x94\xe2\x94\x80override.conf\n     Active: active (running) since Fri 2021-12-03 14:10:19 UTC; 3 days ago\nTriggeredBy: \xe2\x97\x8f docker.socket\n       Docs: https://docs.docker.com\n   Main PID: 1216 (dockerd)\n      Tasks: 44\n     Memory: 170.7M\n     CGroup: /system.slice/docker.service\n             \xe2\x94\x94\xe2\x94\x801216 /usr/bin/dockerd -H fd:// -H tcp://127.0.0.1:2375\n
Run Code Online (Sandbox Code Playgroud)\n

我重新启动服务器,按照上述步骤进行操作,然后再次检查。/var/run/docker.sock文件就在那里,status命令显示如下:

\n
\xe2\x97\x8f docker.service - Docker Application Container Engine\n     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)\n    Drop-In: /etc/systemd/system/docker.service.d\n             \xe2\x94\x94\xe2\x94\x80override.conf\n     Active: active (running) since Fri 2021-12-03 14:10:19 UTC; 10min ago\nTriggeredBy: \xe2\x97\x8f docker.socket\n       Docs: https://docs.docker.com\n   Main PID: 1216 (dockerd)\n      Tasks: 73\n     Memory: 146.5M\n     CGroup: /system.slice/docker.service\n             \xe2\x94\x9c\xe2\x94\x801216 /usr/bin/dockerd -H fd:// -H tcp://127.0.0.1:2375\n             \xe2\x94\x9c\xe2\x94\x802178 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 443 -container-ip 172.18.0.11 -container-port 443\n             \xe2\x94\x9c\xe2\x94\x802185 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 443 -container-ip 172.18.0.11 -container-port 443\n             \xe2\x94\x9c\xe2\x94\x802202 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 80 -container-ip 172.18.0.11 -container-port 80\n             \xe2\x94\x94\xe2\x94\x802209 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 80 -container-ip 172.18.0.11 -container-port 80\n
Run Code Online (Sandbox Code Playgroud)\n

然而,一小时或一天后,它又回到原来的状态,我必须再次重新启动服务器。到目前为止,我发现解决此问题的唯一方法是重新启动或重新启动计算机,然后重复上述步骤。然后一小时或一天后我必须再做一次。

\n

之前和之后状态之间的唯一区别似乎是看起来像docker-proxy进程的存在,所以我尝试对此进行研究。我想知道是否docker-pr我杀死的进程是否相关。更进一步,我想知道我是否使用 SWAG 设置 docker 来处理反向代理,我缺少一个配置步骤来解决这个问题和提到的原始(地址已在使用)问题多于。

\n

我确信我错过了一些东西。我确信其他人也能很好地工作。我缺少什么?

\n

如果您需要更多信息或澄清任何事情,请告诉我。

\n

小智 8

可能需要手动停止“docker.socket”服务,然后重新启动“docker”:

$ sudo systemctl stop docker.socket
$ sudo systemctl restart docker
Run Code Online (Sandbox Code Playgroud)