J'ai écrit quelques scripts pour gérer les conteneurs LXC, et je peux obtenir leurs adresses IP via ifconfig, en supposant que je suis connecté à la console.
Je veux maintenant me connecter à ces conteneurs via ssh. Comment puis-je obtenir leur adresse IP de manière à pouvoir écrire un script? Je ne veux pas non plus définir les adresses manuellement (mais je le ferai, si c'est la seule option).
Jusqu'à présent, j'ai essayé d'utiliser lxc-start
, mais la machine n'a pas d'adresse IP avant de courir /sbin/init
.
Réponses:
La façon la plus simple de le faire maintenant est:
Cela renvoie l'adresse IP sans autre texte.
L'
-i
option spécifie que l'adresse IP doit être retournée et l'-H
option désactive la sortie lisible par l'homme, c'est-à-dire les étiquettes. Pour plus d'informations, consultez la page de manuel lxc-info .EDIT pour la nouvelle version de LXC:
lxc info container-name
Ensuite, vous obtenez des informations détaillées. Regardez le bloc "Ips:", qui devrait ressembler à celui ci-dessous. Vous pourriez peut-être saisir la première adresse IPv4 (
10.121.48.241
) dans ce cas:la source
Vu que l'exécution de choses dans des conteneurs ne semble pas être prise en charge dans Ubuntu, ma prochaine meilleure suggestion est de regarder les baux d'adresses IP qui
dnsmasq
sont distribués. C'est vraiment simple:Il n'y a que deux parties qui sont utiles, nous pouvons donc formater cela beaucoup mieux:
la source
lxc-ls --fancy
.dnsmasq.lxcbr0.leases
Techniquement parlant, vous devriez pouvoir utiliser
lxc-attach
pour vous connecter et tirer dans une commande (et traiter la sortie), comme ceci:Cela nécessite que le conteneur soit en cours d'exécution.
Remarque: je n'ai pas pu faire fonctionner cela. J'ai installé LXC et essayé cela, mais je viens de voir un tas d'erreurs d'espace de noms, de fichiers manquants et d'autres bêtises. Mais ma seule expérience avec LXC est les 10 minutes que j'ai passées sur cette question. Cela peut fonctionner. Il se pourrait que non. Bonne chance!
la source
ifconfig eth0 | grep -Eo 'addr:[0-9.]+' | cut -d: -f2
mettez-le à niveau si vous voulez juste l'adresse IP.No such file or directory - failed to open '/proc/28741/ns/pid'
etfailed to enter the namespace
. J'ai trouvé un bug qui décrit précisément le problème, mais il date de 2010.Cela fonctionne sur Ubuntu 14.04:
et si vous ne voulez que l'adresse IP (utile pour les scripts), (merci @JulianHLam):
la source
lxc-info -n $name -Hi
pour obtenir uniquement l'IP sans espace blanc extranetOu interrogez dnsmasq (qui donne des IP aux conteneurs)
la source
Version Python pour le faire:
la source
La commande ci-dessous remplace l'
lxc-attach
exemple du post précédentÇa marche
ifconfig
à l'intérieur du conteneur et affiche la sortie.Il semble que quelque chose ne soit pas configuré correctement. Pour contourner ce problème, j'ai utilisé le modèle de configuration prédéfini fourni par la documentation LXC pour le faire fonctionner sans autre enquête.
la source
Si vous exécutez LXD, vous pouvez trouver cette commande utile pour obtenir l'adresse IP d'un conteneur en cours d'exécution
la source
sudo lxc-ls --fancy -F ipv4 $my_container_name | tail -1
la source
Laissez dnsmasq le faire pour vous.
Configurez l'instance dnsmasq de votre machine hôte pour interroger l'instance dnsmasq de lxc pour le domaine de premier niveau .lxc.
Dans / etc / default / lxc-net, décommentez cette ligne:
Si l'instance dnsmasq de votre hôte est lancée par NetworkManager (comme c'est le cas avec la plupart des installations de bureau Ubuntu actuelles) créez un fichier appelé /etc/NetworkManager/dnsmasq.d/lxc.conf avec cette ligne à l'intérieur:
Si le dnsmasq de votre hôte est lancé par autre chose que NetworkManager, ajoutez plutôt cette ligne à /etc/dnsmasq.d-available/lxc:
Redémarrez ensuite les choses pour qu'elles reprennent les modifications:
Vous devrez peut-être redémarrer vos conteneurs lxc ou leur faire demander de nouveaux baux DHCP avant qu'ils n'apparaissent dans DNS. (Je ne me souviens pas si cela était nécessaire lorsque j'ai fait cela.) Il convient également de mentionner que j'ai vu un rapport de bogue indiquant que lxc-net ne détectait pas les modifications de dnsmasq lors de son redémarrage, vous pouvez donc vouloir redémarrer votre système hôte juste être sûr.
Alors essayez-le:
la source
La réponse simple est
Si vous ne vous souvenez pas du nom du conteneur, tapez simplement sudo lxc-ls -f.
la source