我有以下docker容器
FROM ubuntu:16.04
RUN apt-get update && apt-get install -y curl net-tools netcat nmap
CMD /bin/bash
我在映射卷/tmp
的情况下运行了
在主机上,我在/tmp
内创建了一个套接字。我使用ncat
进行了测试,并且连接可以从主机进行。但是,它在docker容器中不起作用。
ncat -U /tmp/uwsgi.sock
Ncat: Connection refused.
我该如何实现?
权限:
$ ls -al /tmp/uwsgi.sock
srwxrwxrwx 1 user wheel 0 Jun 19 23:53 /tmp/uwsgi.sock
答案 0 :(得分:1)
Ncat: Connection refused.
表示对等方已关闭连接,因此您在容器中无法链接到它。
一个适合您的示例:
docker主机部分:
shubuntu1@shubuntu1:~$ ncat -lU /tmp/test.sock
hello
world
命令与另一个ssh会话一起午餐容器:
shubuntu1@shubuntu1:~$ docker run -it -v /tmp:/tmp ubuntu /bin/bash
容器部分:
root@01f724409cec:/# apt-get update && apt-get install -y curl net-tools netcat nmap
root@01f724409cec:/# ncat -U /tmp/test.sock
hello
world
输入hello
,world
时,您可以在任何一侧看到,另一侧也可以看到。
但是如果关闭Docker主机端的Unix套接字:
shubuntu1@shubuntu1:~$ ncat -lU /tmp/test.sock
hello
world
^C
shubuntu1@shubuntu1:~$
然后再次将其连接到容器侧:
root@01f724409cec:/# ncat -U /tmp/test.sock
hello
world
^C
root@01f724409cec:/# ncat -U /tmp/test.sock
Ncat: Connection refused.
它将显示Connection refuesd
。