making requests to localhost from inside docker container

倾然丶 夕夏残阳落幕 提交于 2020-01-02 04:07:05

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!