【问题标题】:making requests to localhost from inside docker container从 docker 容器内部向 localhost 发出请求
【发布时间】:2017-02-24 06:57:48
【问题描述】:

我有一个应用程序在我的 localhost 的 8080 端口上运行。我有一些使用该服务的 python 代码。代码在我的基本系统上运行良好,但只要我把它放在一个 docker 容器中,我就会得到urllib2.URLError: <urlopen error [Errno 111] Connection refused>。我有另一个应用程序在 6543 端口公开了一个 api。同样的问题。

我假设我需要告诉 docker 它允许使用某些 localhost 端口。我该怎么做?

这里有一些更具体的细节:

我可以在我的基础系统上很好地执行这行代码:

urllib2.urlopen(req, json.dumps(dData))

但是当我尝试从 docker 容器中执行此操作时,我得到:

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>

我尝试向 docker.sock 添加权限

ls -l /var/run/docker.sock      
=> srw-rw-rwx 1 root docker 0 Feb 17 11:09 /var/run/docker.sock

【问题讨论】:

标签: python docker urllib2


【解决方案1】:

使用参数-net host创建您的python容器,它将与主机共享地址和端口,因此它可以访问在主机上运行的进度。

参考我的另一个回答:https://stackoverflow.com/a/48069763/5465023

【讨论】:

  • 如何为 docker-compose 中定义的服务执行此操作?
猜你喜欢
  • 2020-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-07
  • 1970-01-01
相关资源
最近更新 更多