使用netcatpipe道unix套接字到TCP套接字

我想使用这个命令公开一个Unix套接字作为一个TCP套接字:

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

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

任何想法如何得到这个工作?

PS:我知道我可以使用socat,或者只是告诉docker也听一个TCP套接字,但我使用的项目primefaces虚拟机映像,它不会让我修改除/ home之外的任何东西。

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

 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