【问题标题】:What is purpose of the switch --containerd in command dockerd?命令 dockerd 中开关 --containerd 的目的是什么?
【发布时间】:2021-08-17 20:27:32
【问题描述】:

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

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

根据this quesion的回答,如果我为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 daemon。

提前谢谢你。

【问题讨论】:

    标签: docker docker-daemon


    【解决方案1】:

    文档的重要部分位于“Docker runtime execution options”部分的下方,其中写道:

    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 的实例。

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

    【讨论】:

    • 明白你的意思。这似乎是一个明确的设置。我将把它保存在我的覆盖命令行中,以防发生任何意外错误。 :)
    猜你喜欢
    • 2018-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多