命令 dockerd 中的 --containerd 开关有什么作用? The purpose of the switch --containerd in command dockerd?

4
如果我运行systemctl cat docker.service来检查docker.service的单元文件,可以在默认的unit文件中找到ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
我的问题是--containerd=/run/containerd/containerd.sock开关的目的是什么?
根据此问题的答案,如果我生成一个docker.service的重载文件,并将内容设置为:
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd://

有效的配置应该是:
[Service]
ExecStart=/usr/bin/dockerd -H fd://

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

--containerd=/run/containerd/containerd.sock的配置将被省略。

提前致谢。

1个回答

6
重要的文档部分在 "Docker运行时执行选项" 部分,其中写道:

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

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

换句话说,原始的 Docker unit 可能包括 --containerd=/run/containerd/containerd.sock,因为 containerd 由 systemd 的 .socket.service units 管理。
根据文档中的阅读,如果从您的覆盖中排除该标志,则 Docker 将启动自己的 containerd 实例,而不是使用绑定到 / run / containerd / containerd.sock 的实例。
这可能是无害的,但最好还是将该标志添加到您的覆盖命令行中。

明白了。看起来是一个显式设置。我会将其保留在我的覆盖命令行中,以防发生任何意外错误。 :) - krave

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接