如何使docker在systemd下的centos下监听unix和TCP套接字
我已经使用systemd在CentOS下安装了docker(v17.06.2-ce)。 Docker工作正常并且侦听unix套接字。现在我想让docker收听Unix套接字和TCP套接字2375.由于这是一个内部开发机器安全性没有问题。如何使docker在systemd下的centos下监听unix和TCP套接字
我扫描了互联网发现了几篇文章,但仍然有一些问题。
我的理解是我有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这样
[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
准备systemd插座但是,这将只定义一个TCP套接字。根据一篇文章,docker将响应TCP端口,但不再是unix套接字。
如果有人能指出细节,那将会很好。
所以不要触摸docker.socket文件或任何东西。 Systemd具有DropIns的概念,您可以使用下拉文件覆盖部分服务。
所以创建服务第一
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
指定我们希望在新的命令覆盖
现在我们应该重新启动泊坞服务
systemctl daemon-reload
systemctl restart docker
现在您的服务也将在2375年收听。我相信目前无法使用/etc/docker/daemon.json
控制主持人选项。详情参见
https://docs.docker.com/engine/reference/commandline/dockerd/#docker-runtime-execution-options
好尖约空白ExecStart =行下面的链接。我之前没有注意到这种行为,但我现在看到这在'man systemd.service'中有记录。 –