gra*_*fra 3 api tcp centos systemd docker
我已经使用 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"
]
}
Run Code Online (Sandbox Code Playgroud)
或者像这样的套接字激活?
{
"hosts": [ "unix:///var/run/docker.sock",
"fd://"
]
}
Run Code Online (Sandbox Code Playgroud)
然后我发现的第二件事是通过提供这样的文件 docker.sockst 来准备 systemd socket
[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
Run Code Online (Sandbox Code Playgroud)
但这只会定义一个 TCP 套接字。根据一篇文章,docker 将响应 TCP 端口,但不再响应 unix 套接字。
如果有人能指出细节,那就太好了。
所以不要接触 docker.socket 文件或任何东西。Systemd 有 DropIns 的概念,您可以使用 dropin 文件覆盖部分服务。
所以先为服务创建dropin文件夹
mkdir -p /etc/systemd/system/docker.service.d/
Run Code Online (Sandbox Code Playgroud)
然后你创建一个配置文件
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
Run Code Online (Sandbox Code Playgroud)
第一个ExecStart=空白原始命令,第二个ExecStart指定我们要覆盖的新命令
现在我们应该重新启动 docker 服务
systemctl daemon-reload
systemctl restart docker
Run Code Online (Sandbox Code Playgroud)
现在您的服务也将在 2375 侦听。我相信目前无法使用/etc/docker/daemon.json. 请参阅以下链接了解更多详情
https://docs.docker.com/engine/reference/commandline/dockerd/#docker-runtime-execution-options
| 归档时间: |
|
| 查看次数: |
5839 次 |
| 最近记录: |