Q:

Addressing Flask application launched from virtual machine

I have the following problem: I have OS xUbuntu and I run virtual machine with VirtualBox. The OS on my VM is Debian Wheezy. I have Flask application. What I want to do is, when I launch my application from the VM (which is on 127.0.0.1:5000), to run it on browser from my host machine (xUbuntu). 
How do I do that? 

A:

There are a few strategies that VirtualBox uses to allow "guest" VMs (in your case, the Debian Wheezy VM) to access the network of your "host" computer (in your case, xUbuntu). I'll try to give you a brief overview of each, as in the end there are a few ways to do what you're trying to do, and what strategy you use might be specific to your situation.
NAT
The default is to use "NAT" (Network Address Translation), which basically sets up your host like a networking switch, putting all of your guest images under a "subnet". While this makes it easy for your guest to access your network and the internet, it does not make it possible to easily have your host access your guests (although it is possible with NAT Port Forwarding). In other words, your host IP might be 192.168.1.9, but then your guest IP would be 10.0.2.15. Without setting up port forwarding, You cannot connect to 10.0.2.15 from your host computer, only packets in a connection that originated from the guest can find their way back to the guest.
Bridged Network
This allows your various guest VMs to appear as if they were computers on the same network as your host. In other words, if your host received an IP of 192.168.1.100 from your router, then your guest might get 192.168.1.101. In this case, both of the computers can communicate to eachother using these IP addresses. However, this means that the host and guest cannot communicate if there is no router giving them their IP addresses (if you are running on a laptop and there is no wireless access point to connect to, for example). It also means that your VM is available to receive outside traffic, which might have security implications. Finally, since your router is most likely setting you up with an IP through DHCP, it's possible that your guest IP will change whenever you start up the VM, which can be annoying.
So, setting your system up like this might work for you, so long as you're okay with the fact that your host computer must be hooked up to a router, and the packets will go through the router.
Internal Networking
This means that the Guest VMs set up as "Internal Networking" will be able to talk to eachother on their own network, in addition to contacting the host. However, I believe that it will not allow the host to contact the VMs, so it's probably not what you want. Note that I don't have as much experience with this one.
Host-Only Networking
This creates a new interface on host computer that can be used send packets between the host and guest. This means no router needed to assign IP addresses. However, this also means that the guest cannot access the internet, only connect directly to the host.
Which to choose?
Obviously, what to do depends on your case. As show in this question on Superuser, there might not seem to be one good option. The answer shows a workaround: have a Guest use two separate adapters in order to get the benefits of multiple style of networking. The example there is to use one adapter for NAT (which allows your guest to easily access the internet) and another for Host-Only (allowing your host to connect to your guest).
If you have issues getting this set up, consider using the VirtualBox community, or Superuser (which is a better place for VirtualBox-specific questions than StackOverflow).

A:

I solved this problem like explained here Thanks a lot for everyone's effort to help! 

