2017-02-24 2 views
4

J'ai une application qui s'exécute sur mon hôte local au port 8080. J'ai du code python qui consomme ce service. Le code fonctionne bien sur mon système de base, mais dès que je le mets dans un conteneur docker, je reçois urllib2.URLError: <urlopen error [Errno 111] Connection refused>. J'ai une autre application qui expose une API au port 6543. Même problème.faire des demandes à localhost depuis l'intérieur du conteneur docker

Je suppose que je dois dire à docker qu'il est autorisé à consommer certains ports locaux. Comment je fais ça?

Voici quelques détails plus précis:

Je peux exécuter cette ligne de code très bien sur mon système de base:

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

mais lorsque je tente de le faire à l'intérieur d'un conteneur de docker je obtenir:

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> 

J'ai essayé d'ajouter des autorisations à docker.sock

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

http://stackoverflow.com/a/24326540/4720042 Cochez cette case –

Répondre

0

Créez votre conteneur python avec l'argument -net host, il partagera l'adresse et le port avec l'hôte, afin qu'il puisse accéder à la progression qui est en cours sur l'hôte.

Reportez-vous à mon autre réponse: https://stackoverflow.com/a/48069763/5465023