我正在尝试使用此命令将unix套接字公开为tcp套接字:
nc -lkv 44444 | nc -Uv /var/run/docker.sock
当我尝试从浏览器访问localhost:44444/containers/json
时,它不会加载任何内容但保持连接打开(加载东西不断旋转),但控制台(因为-v标志)显示适当的http响应。
有关如何使其发挥作用的任何想法?
PS:我知道我可以使用socat,或者只是告诉docker也在tcp套接字上监听,但我使用的是原子vm图像项目,除了/ home之外,它不会让我修改任何东西。< / p>答案 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