gpt4 book ai didi

api - 如何让docker在centos下用systemd监听unix和TCP socket

转载 作者:可可西里 更新时间:2023-11-01 02:36:54 26 4
gpt4 key购买 nike

我已经使用 systemd 在 CentOS 下安装了 docker (v17.06.2-ce)。Docker 工作正常并监听 unix 套接字。现在我想让 docker 监听 Unix 套接字和 TCP 套接字 2375。因为这是一个内部开发机器,安全性没有问题。

我浏览了互联网,找到了几篇文章,但仍然有一些问题。

我的理解是我有 systemd 文件 (docker.service),它在没有任何参数的情况下启动 dockerd。ExecStart=/usr/bin/dockerd

然后这里有文件 demon.json 我可以列出我要听的内容。我的问题是在这里输入什么。可能是。

{
"hosts": [ "unix:///var/run/docker.sock",
"tcp://0.0.0.0:2375"
]
}

或者是类似这样的套接字激活?

{
"hosts": [ "unix:///var/run/docker.sock",
"fd://"
]
}

然后我发现的第二件事是通过提供这样的文件 docker.sockst 来准备 systemd 套接字

[Unit] Description=Docker Socket for the API
PartOf=docker.service

[Socket]
ListenStream=tcp://0.0.0.0:2375
SocketMode=0660
SocketUser=root
SocketGroup=docker

[Install]
WantedBy=sockets.target

但这只会定义一个 TCP 套接字。根据一篇文章,docker 将响应 TCP 端口,但不再响应 unix 套接字。

如果有人能指出细节就太好了。

最佳答案

所以不要碰 docker.socket 文件或任何东西。 Systemd 有一个 DropIns 的概念,您可以使用一个 dropin 文件覆盖部分服务。

所以先为服务创建dropin文件夹

mkdir -p /etc/systemd/system/docker.service.d/

然后你创建一个配置文件

cat > /etc/systemd/system/docker.service.d/90-docker.conf <<EOF
[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon -H fd:// -H tcp://0.0.0.0:2375

第一个 ExecStart= 空白原始命令,第二个 ExecStart 指定我们要覆盖的新命令

现在我们应该重启docker服务

systemctl daemon-reload
systemctl restart docker

现在您的服务也将在 2375 监听。我相信目前无法使用 /etc/docker/daemon.json 控制主机选项。查看下面的链接了解更多详情

https://docs.docker.com/engine/reference/commandline/dockerd/#docker-runtime-execution-options

关于api - 如何让docker在centos下用systemd监听unix和TCP socket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46203667/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com