使用netcat将unix socket连接到tcp socket

时间:2014-08-21 18:15:30

标签: linux sockets docker netcat

我正在尝试使用此命令将unix套接字公开为tcp套接字:

nc -lkv 44444 | nc -Uv /var/run/docker.sock

当我尝试从浏览器访问localhost:44444/containers/json时,它不会加载任何内容但保持连接打开(加载东西不断旋转),但控制台(因为-v标志)显示适当的http响应。

有关如何使其发挥作用的任何想法?

PS:我知道我可以使用socat,或者只是告诉docker也在tcp套接字上监听,但我使用的是原子vm图像项目,除了/ home之外,它不会让我修改任何东西。< / p>

1 个答案:

答案 0 :(得分:12)

您只是重定向传入数据,而不是传出数据。 试试:

mkfifo myfifo
nc -lkv 44444 <myfifo | nc -Uv /var/run/docker.sock >myfifo

请参阅http://en.wikipedia.org/wiki/Netcat#Proxying

您希望随机生成fifo名称的脚本中的

编辑,并在打开后将其删除:

FIFONAME=`mktemp -u`
mkfifo $FIFONAME
nc -lkv 44444 < $FIFONAME | nc -Uv /var/run/docker.sock > $FIFONAME &
rm $FIFONAME
fg