1

如果我运行systemctl cat docker.service检查 docker.service 的单元文件, ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock可以在 docker 的默认单元文件中找到。

我的问题是切换的目的是什么 --containerd=/run/containerd/containerd.sock

根据这个问题的答案,如果我为 docker.service 生成一个覆盖文件,内容为:

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd://

有效的配置是:

[Service]
ExecStart=/usr/bin/dockerd -H fd://

并将--containerd=/run/containerd/containerd.sock被省略。

那么这个配置会导致什么情况呢?我希望 docker 在启用 TLS 保护的情况下可以在本地和远程正常工作。我还需要通过 ssh 调用 docker 守护进程。

先感谢您。

4

1 回答 1

2

文档的重要部分在“ Docker 运行时执行选项”部分的下方,它说:

Docker 守护程序依赖于符合 OCI 的运行时(通过 containerd 守护程序调用)作为其与 Linux 内核命名空间、cgroup 和 SELinux 的接口。

默认情况下,Docker 守护进程会自动启动 containerd。如果要控制 containerd 启动,请手动启动 containerd 并使用 --containerd 标志将路径传递给 containerd 套接字。

换句话说,原来的 Docker 单元可能包括--containerd=/run/containerd/containerd.sock因为containerd由 systemd.socket.service单元管理。

通过从您的覆盖中排除标志,我对文档的阅读是 Docker 将启动自己的containerd实例,而不是使用绑定到/run/containerd/containerd.sock.

可能是无害的,但最好将该标志添加到您的覆盖命令行中。

于 2021-08-17T23:28:32.923 回答