问题
I have an application runing on my localhost at port 8080. I have some python code that consumes that service. The code runs fine on my base system but as soon as I put it inside a docker container I get urllib2.URLError: <urlopen error [Errno 111] Connection refused>
. I have another application that exposes an api at port 6543. Same problem.
I assume I need to tell docker that it's allowed to consume certain localhost ports. How do I do that?
Here are some more specific details:
I can execute this line of code just fine on my base system:
urllib2.urlopen(req, json.dumps(dData))
but when I try to do it from inside a docker container then I get:
File "/usr/lib/python2.7/urllib2.py", line 154, in urlopen
return opener.open(url, data, timeout)
File "/usr/lib/python2.7/urllib2.py", line 431, in open
response = self._open(req, data)
File "/usr/lib/python2.7/urllib2.py", line 449, in _open
'_open', req)
File "/usr/lib/python2.7/urllib2.py", line 409, in _call_chain
result = func(*args)
File "/usr/lib/python2.7/urllib2.py", line 1227, in http_open
return self.do_open(httplib.HTTPConnection, req)
File "/usr/lib/python2.7/urllib2.py", line 1197, in do_open
raise URLError(err)
urllib2.URLError: <urlopen error [Errno 111] Connection refused>
I've tried adding permissions to docker.sock
ls -l /var/run/docker.sock
=> srw-rw-rwx 1 root docker 0 Feb 17 11:09 /var/run/docker.sock
回答1:
Create your python container with argument -net host
,it will share address and port with host,so it can access progress which is running on host.
Refer to my another answer: https://stackoverflow.com/a/48069763/5465023
来源:https://stackoverflow.com/questions/42432562/making-requests-to-localhost-from-inside-docker-container