[Bug 1264338] Re: could not route the host for container
markshao
mark.shao at emc.com
Fri Dec 27 06:30:00 UTC 2013
Hi Robie
Thank you so much for your reply. I don't know whether it is a bug for
the lxc of ubuntu . But I will try to describe the issue I met in
detail.
My Lxc version is:
lxc version: 0.7.5
My Operation system information as following
Distributor ID: Ubuntu
Description: Ubuntu 12.04.3 LTS
My purpose is to create the container and execute the command remotely
on the new container. I think the lxclite is just the wrapper for the
standard lxc tool . I currently write a simple demo to show the issue .
The following is the test case 1
#!/usr/bin/python
import commands
from fabric.api import settings
from fabric.operations import run
import sys
def main():
result = commands.getstatusoutput("lxc-create -t ubuntu -n test")
if result[0] != 0:
sys.exit(1)
result = commands.getstatusoutput("lxc-start -d -n test")
if result[0] != 0:
sys.exit(1)
result = commands.getstatusoutput("awk '{ print $4,$3 }'
/var/lib/misc/dnsmasq.leases | column -t | grep test |awk '{print $2}'")
ip = result[1]
print ip
with settings(host_string=ip,user="ubuntu",password="ubuntu"):
print run("whoami",shell=True)
if __name__ == "__main__":
main()
The above test code just use python module to call the standard lxc tool
, and then using the fabric to execute the command on the new container.
The IP address for the new container could be extract correctly , but
the remote command execution will not work due to the low level socket
error as following
fabric.exceptions.NetworkError: Low level socket error connecting to
host 10.0.3.223 on port 22: No route to host (tried 1 time)
I check the info for the container
> lxc-info -n test
state: RUNNING
pid: 14646
The test case 2 is that I keep the container running , and just run the
code for remote command execution
#!/usr/bin/python
from fabric.api import settings
from fabric.operations import run
import commands
result = commands.getstatusoutput("awk '{ print $4,$3 }'
/var/lib/misc/dnsmasq.leases | column -t | grep test |awk '{print $2}'")
ip = result[1]
print ip
with settings(host_string=ip,user="ubuntu",password="ubuntu"):
print run("whoami",shell=True)
~
And it will work , the output is :
[10.0.3.223] run: whoami
[10.0.3.223] out: ubuntu
[10.0.3.223] out:
ubuntu
My personal opinion is that after the lxc-create and lxc-start , the lxc
tool may have update some network information on the system so that the
system can route the ip to the right place .
In test case 1, all the steps on in one process , so the process may not
know the update information for the network . Maybe I need some code to
reimport the network information into the process .
Due to I am a new guy in lxc , I don't have any concept about it . So
hope you can help me , thanks .
--
You received this bug notification because you are a member of Ubuntu
Server Team, which is subscribed to lxc in Ubuntu.
https://bugs.launchpad.net/bugs/1264338
Title:
could not route the host for container
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/lxc/+bug/1264338/+subscriptions
More information about the Ubuntu-server-bugs
mailing list