web-dev-qa-db-fra.com

Conteneur LXD refusant les connexions de l'hôte

Je suis assez nouveau sur LXD après l'avoir découvert récemment. Je progresse dans les interactions de base avec les images et les conteneurs - cela semble prometteur.

Actuellement, je suis bloqué sur un problème de connexion de l'hôte à un service exécuté dans un conteneur local. C'est la première fois que j'essaye. J'obtiens une erreur "connexion refusée". Plus de détails ci-dessous:

user@sparky1:~$ curl 10.0.3.49
curl: (7) Failed to connect to 10.0.3.49 port 80: Connection refused
user@sparky1:~$ 

L'hôte est Ubuntu Server 14.04 sur mon ordinateur portable - c'est une nouvelle installation et c'est assez simple. J'ai laissé le système faire toute la configuration (y compris le pont lxcbr0) et je n'ai changé aucune des valeurs par défaut prêtes à l'emploi.

J'exécute un conteneur basé sur une image CentOSv6. Le conteneur est démarré et à l'intérieur, j'exécute un serveur Web. De l'intérieur du conteneur, je peux très bien me connecter à son serveur Web local sur le port 80 (en exécutant "curl hostname"). Il se connecte sur l'IP 127.0.0.1 de bouclage. J'obtiens une réponse valide du serveur Web local depuis le conteneur. Yay.

Une réponse réussie (même s'il s'agit d'une réponse 403):

[root@wc1 ~]# curl wc1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /
on this server.</p>
<hr>
<address>IBM_HTTP_Server at wc1 Port 80</address>
</body></html>
[root@wc1 ~]#

Si j'essaie de me connecter via l'IP sur le pont, soit à l'intérieur du conteneur, soit à partir de l'hôte, j'obtiens l'erreur mentionnée "connexion refusée".

Donc, j'essaie de comprendre ce qu'il faudra pour autoriser les connexions de l'hôte au serveur Web s'exécutant dans le conteneur. J'ai passé quelques heures à googler et je n'ai pas trouvé la réponse (ou j'ai été trop dense pour la reconnaître).

Le pare-feu est désactivé ("état ufw" le dit). Qu'est-ce que je rate? Merci d'avance.

1
David MacBride

J'ai résolu mon propre problème. J'ai d'abord rappelé (supposé. Soupir) que j'avais spécifié le IP lors de l'émission de la commande 'curl' depuis l'intérieur du conteneur, mais en fait j'avais spécifié le nom d'hôte. Une fois que j'ai remarqué que j'avais en fait spécifié le nom d'hôte et que l'hostanme avait résolu le bouclage, j'ai compris mon problème.

Dans mon Apache httpd.conf, le Listen di, que je n'avais pas remarqué résolu sur le périphérique de bouclage et non l'IP sur le pont lxcbr0. rective a spécifié le nom d'hôte. Le fichier httpd.conf a été généré automatiquement par un outil de fournisseur, donc je n'y ai pas pensé au début. Une fois que j'ai changé la directive Listen pour écouter sur la bonne IP (10.0.3.49), tout a fonctionné.

1
David MacBride