dockerized socat 的管道输入在 docker 主机上的套接字上运行

问题描述

我的目标是使用 dockerized API 查询 Haproxy Runtime socat

下面的命令返回空结果(/var/run/haproxy.stat 是位于 docker 主机上的 haproxy 套接字)

 echo "-h" | docker run  -a stdin -a stderr alpine/socat stdio /var/run/haproxy.stat

我尝试通过volume添加haproxy socket,但结果还是空的。

echo "-h" | docker run  -a stdin -a stderr  -v /var/run/haproxy.stat:/var/run/haproxy.stat alpine/socat stdio /var/run/haproxy.stat

解决方法

有效的命令是:

echo "-h" | docker run -i -a stdin -a stderr -a stdout -v /var/run/haproxy.stat:/var/run/haproxy.stat alpine/socat stdio /var/run/haproxy.stat

需要将 -a stdout-i 添加到 docker run

按照 BMitch 的建议”尝试了下面的命令,效果很好

echo "-h" | docker run -i -v /var/run/haproxy.stat:/var/run/haproxy.stat alpine/socat stdio /var/run/haproxy.stat